requests内容编码问题

在requests获取html内容的时候,由于页面编码格式的问题,有时候会出出现乱码的问题,这里记录下统一的解决方法。

先写一段获取百度首页的代码

1
import requests
2
req = requests.get('https://www.baidu.com').text()
3
print(req)

这段代码执行后,后获取百度首页的html代码,但是有些网站获取html代码就可能不那么轻松了,可能就会出现编码问题,也不演示这么多,大多说html的编码是utf-8,但是不排除其他编码方式的存在,为了解决这个问题,让指定正确的编码方式,requests中封装了获取页面编码方式的方法。以后获取页面源码的时候可以这样写,增加代码的健壮性。

1
import requests
2
req = requests.get('https://www.baidu.com')
3
if req.status_code == 200:
4
    req.encoding = req.apparent_encoding
5
    print(req.text())

通过添加设置apparent_encoding,调用chardet.detect()来识别文本编码,可以实现自动编码。