Python3的requests类抓取中文页面出现乱码的解决办法

Posted zhouxinfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3的requests类抓取中文页面出现乱码的解决办法相关的知识,希望对你有一定的参考价值。

技术分享图片

 

这种乱码现象基本上都是编码造成的,我们要转到我们想要的编码,先po一个知识点,嵩天老师在Python网络爬虫与信息提取说到过的:response.encoding是指从HTTP的header中猜测的响应内容编码方式,如果header中不存在charset,则默认编码为ISO-8859-1 ,这样一来某些不规范的服务器返回就必然乱码了;response.apparent_encoding是指从内容中分析出的响应内容编码方式。requests内部的 utils 也提供了一个从返回 body 获取页面编码的函数get_encodings_from_content,这样如果服务器返回的头不含 Charset,再通过 get_encodings_from_content 就可以知道页面的正确编码了。下面是调试的过程:

import requests
from requests.exceptions import RequestException

def get_one_page(url):
    try:
        response=requests.get(url)
        if response.status_code == 200:
            #print(response.text)
            print(response.encoding)
            print(response.apparent_encoding)
            r=response.text
            print(requests.utils.get_encodings_from_content(r)[0])
            a=r.encode(ISO-8859-1).decode(requests.utils.get_encodings_from_content(r)[0])
            print(a)
            print(------------------------------------)
            b = r.encode(ISO-8859-1).decode(response.apparent_encoding)
            print(b)
        return None
    except RequestException:
        return None

def main():
    url = http://www.mh160.com/
    get_one_page(url)

if __name__==__main__:
        main()

 

看图!看图!看图!


技术分享图片

以上是关于Python3的requests类抓取中文页面出现乱码的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

win10+python3.5,使用requests抓取信息遇到chunked乱码的诡异问题。python2.7则不乱码

python3 抓取图片

python3爬虫学习笔记

python3抓取超链接

python3用BeautifulSoup抓取图片地址

Python的requests包在抓取页面的时候页面源代码抓取不完全,页面数据不是动态加载的。