碎知识整理

2017-12-14  本文已影响0人  玩阿轲睡妲己

去掉内容中html标签

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

xpath

中文乱码问题

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类方法

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/

上一篇 下一篇

猜你喜欢

热点阅读