Python应用集

Python2 `requests`库抓取网页出现乱码

2019-01-11  本文已影响2人  Solomon_Xie

练习抓取网页时遇到的,如果是简书等这些标准网站,正常抓取是没问题的。但是很多网页竟然怎么抓取都是所有中文都乱码。弄的我还以为是python代码本身的encoding问题。最后才追溯到原来是出现在源头requests库里面。

参考这两篇文章,requests官方文档, 和,代码分析Python requests库中文编码问题,非常有参考性。

第二篇文章中看到,很多网页实际上并不都是utf-8的编码格式,还有很多是ISO-8859-1格式,如下图:

image
但是,其实不是网页本身的问题!我们查看网页本身的headers发现,他们的charset值是utf-8,但是为什么用r.encoding()得到的却是ISO-8859-1呢?文章中指出原来是requests的bug,而且常年不解决。所以就需要我们自己来想办法。
我们不能手动去检查每一个网页的编码啊,那样太麻烦了。
官方文档中出现了这么一小句话,非常重要,亲测有效:
image
虽然这句话不是为了处理网页的,但是二进制!沿着这个思路,又在官网看怎么将网页获取为二进制模式的:
image
就是使用r.content获取。
上一篇 下一篇

猜你喜欢

热点阅读