导语:
当我们用爬虫成功获取网页源码后,可能打印出来却是乱码的,因为使用
requests
模块时,程序会根据HTTP
头自动判断网页编码,但这样做就显得不太准确,所以还需要我们手动修改。
手动修改网页编码显得繁琐且笨拙,我们引入一个新的模块cchardet
来帮助我们完成这一系列的工作。
安装
pip install cchardet
因为是用C语言编写的缘故,
cchardet
比chardet
更高效使用
该模块里面只有一个方法,那就是
detect
,下面给出官方的使用案例:
- 测试
可以看到,requests
模块自动判断的网页编码方式为’ISO-8859-1’,但cchardet
判断的编码方式为’GB18030’,根据实际验证,发现后者的编码方式正确,所以cchardet
的准确性更高。
detect
函数返回值为一个字典,其中encoding
表示编码方式,confidence
表示准确度
- 实际使用建议
如果要得到请求返回的二进制数据,直接return res.content
即可,如果要获得网页文本,那么建议先判断编码方式,然后对二进制使用得到的编码方式进行解码,从而得到显示正常的文本。其中,res.content.decode(encoding)
得到的是一个str
类型数据。
也可以:res.encoding = cchardet.detect(res.content)['encoding']