由于requests没有发现http headers中的charset,就会使用默认的IOS-8859-1
有些网站requests识别不到charset,所以设置时还是先看html源码再设置,如果使用requests get或post得到的对象的encoding的属性为ios-8859-1,说明requests未找到charset,这时候就要看html源码,找到网页编码,再将得到的对象encoding为网页编码。
在网页源码中直接<meta charset="UTF-8">标签,使得爬虫爬取的get或post得到的requests.models.Response对象调用其encoding方法设置编码与网站的一致,就不会乱码了
例子如下:
网页中编码标签
text/html;charset=utf-8
代码:
import requests
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
}
html=requests.get("https://www.baidu.com/",headers=headers)
html.encoding="UTF-8"
print(html.text)