去掉内容中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
网友评论