python 爬虫 requests 中文乱码 问题解决

Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码;Python3的 默认编码 为Unicode,可以识别中文字符。

python编码简介

在用python的requests做爬虫或者其它数据采集任务的时候,爬取下来的内容会有乱码的情况,遇到这问题在多数情况下是因为页面编码和python默认编码不匹配导致的。我们要先确定网站编码,再将爬取的代码设置成对应的编码即可。

来一个例子?, 原始代码如下, 显示的内容就是乱码,或者写入文件的时候直接报错。

        headers = {
            'x-requested-with': 'XMLHttpRequest',
            'referer': 'https://www.***.com/0_31/',
            'User-Agent': 'Mozilla/6.0 (Windows NT 10.0; Win64; x64) AppleWebKit/538.38 (KHTML, like Gecko) Chrome/71.0.3648.113 Safari/541.36'
        }
        res = requests.get(url, headers=headers, verify=False)
        print(res.text)
# 输出内容包含 IMDBÆÀ·Ö8·Ö×óÓÒӰƬ400Óಿ
页面编码

通过在浏览器(Chrome)页面按F12,查看Elements,可以看到页面的 charset,我们发现charset=gbk, 这个时候我们只需要添加一行代码就可以修正乱码的问题。

res = requests.get(url, headers=headers, verify=False)
res.encoding = "gbk"
print(res.text)

发表回复