美文网首页Python应用集
Python2 `requests`库抓取网页出现乱码

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

作者: Solomon_Xie | 来源:发表于2019-01-11 00:47 被阅读2次

    练习抓取网页时遇到的,如果是简书等这些标准网站,正常抓取是没问题的。但是很多网页竟然怎么抓取都是所有中文都乱码。弄的我还以为是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获取。

    相关文章

      网友评论

        本文标题:Python2 `requests`库抓取网页出现乱码

        本文链接:https://www.haomeiwen.com/subject/juxirqtx.html