碎知识整理

去掉内容中html标签

re.sub(r'<[^>]+>','',content)

  • 替换某字符
    re.sub('Hello','Hi',content) 或 content.replace('Hello','Hi')

xpath

  • 获取某标签下所有的内容
    1, response.xpath('//*[@id="Results"]/string(.)')
    2,print(x.xpath('string(div[2]/a)'))
  • 获取某块标签下所有含id属性的li标签
    sel.xpath('//*[@id="Results"]//li[@id]')
  • 获取<a>标签的 href 属性
    sel.xpath('/html/body/div/div[2]/a/@href').extract()[0]

中文乱码问题

0,

text = response.content.decode('utf-8')

1, python 的 chardet库这是“猜测”编码,猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。

import chardet
print(chardet.detect(response.content)['encoding'])

2, requests 属性

self.response = response.content.decode(response.encoding) #一般是从response.headers中content-type字段中的charset的值
(推荐) self.response = response.content.decode(response.apparent_encoding)  #   一般是采用上述的 python 的 chardet库这种方法

3, 如果上述两个方式不能解决,那有可能是网页的压缩导致的。检查头信息是不是包含了Accept-Encoding这个字段,如果有,请删除这个字段

    headers = {
        'Accept-Encoding': 'gzip, deflate, sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Connection': 'keep-alive',
    }

Pthon类方法

  • __call__()
class Foo(object): 
  def __call__(self,name): 
    print "hello",name
  
f = Foo()
f('Alice')#使类实例f可call 

输出:
hello Alice

爬虫cookie保存

scrapy使用中间件保持cookie,一个爬虫的多个cookie保存在cookiejar中,使用meta传递使用的标识符。(大街网的cookie有有效期,可以测试使用!)
供参考文章:
http://python.jobbole.com/88478/?utm_source=blog.jobbole.com&utm_medium=relatedPosts
scrapy官方:https://doc.scrapy.org/en/0.24/topics/downloader-middleware.html?highlight=cookie#std:reqmeta-cookiejar

系列文章:http://python.jobbole.com/category/guide/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容