有的网页是gb2312编码,则需要将response.body判断编码,并解码
#检查编码
def check_encoding(self,response):
import chardet
#
#detect传入的是bytes
# 返回{'confidence': 0.99, 'encoding': 'GB2312'}
# 'encoding': 'utf-8'
encoding_info = chardet.detect(response.body)
encoding = encoding_info.get('encoding')
#非utf-8则解码
if encoding != 'utf-8':
# 如果是gb2312,则用gbk来解码,gbk可以解码繁体字以及日文假文等,解码更强
if encoding.lower()=='gb2312':
encoding = 'gbk'
new_body = response.body.decode(encoding)
#替换原来的body内容
response = response.replace(body=new_body)
return response
解决方法:使用gbk,代替gb2312,例如:u_string = unicode(string , "gbk")