环境:
python3.6
爬取代码:
import requests
url = 'https://www.dygod.net/html/tv/hytv/'
req = requests.get(url)
print(req.text)
爬取结果:
µçÊÓ¾ç / »ªÓïµçÊÓ¾ç_µçÓ°ÌìÌÃ-ѸÀ×µçÓ°ÏÂÔØ如上,title内容出现乱码,自己感觉应该是编码的问题,但是不知道如何解决,于是上网查看
参考网址:
问题找到,原来是reqponse header只指定了type,但是没有指定编码(一般现在页面编码都直接在html页面中),查找原网页可以看到
在content-type属性中,未设置编码格式,正常设置如下
所以使用默认的编码格式
《HTTP权威指南》里第16章国际化里提到,如果HTTP响应中Content-Type字段没有指定charset,则默认页面是'ISO-8859-1'编码。
这处理英文页面当然没有问题,但是中文页面,就会有乱码了!
print(req.apparent_encoding)
结果为:GB2312
所以只需要加上
req.encoding = req.apparent_encoding
这个就可以了!
代码:
import requests
url = 'https://www.dygod.net/html/tv/hytv/'
req = requests.get(url)
req.encoding = req.apparent_encoding
print(req.text)
结果中文就不会乱码了