Python爬虫:decode('utf-8')之后还是乱码的解决
今天学习爬虫ing,结果不出所料的遇到了乱码,捣鼓了半天,翻了网上数种方法,终于在快裂开的时候,忽然眼前一亮,发现了一个新方法,于是乎竟然解决了。
————————————————————分割线————————————————————
这是decode的那部分代码。
html = etree.HTML(r.text) s = etree.tostring(html).decode('utf-8') print(s)
下面是一部分结果,可以看到本该是中文的地方还都是乱码,虽然已经decode过了。
由于不懂基本原理,只能到网上找各种方法直接去试QAQ。
0.下面是解决我的问题的代码
html = etree.HTML(r.text) s = etree.tostring(html,encoding='utf-8').decode('utf-8')#就是在tostring里面加了个encoding print(s)
另外再总结一下网上的各种其他解决方法,也许这次没用下次就有用了呢,以后直接来这里copy就好了23333。希望回来能弄明白这些道理,照搬的话只知其然,不知其所以然也。
1.unicode_escape
response.text.encode('utf-8').decode('unicode_escape')
unicode_escape本质上是将unicode的内存编码值进行存储,读取文件时在反向转换回来。
2.直接用json
import json text = json.loads(response.text)
前两个方法的原文见这里。
3.先把response给encode
r=requests.get(url) r.encoding='gb2312'#解决中文不能正常显示 s=etree.HTML(r.text) result=etree.tostring(s)
这里是那个作者涉及的原网页编码是'gb2312',可在网页源代码的charset查看。我爬取的网站是utf-8,但是改过来的话试验这种方法也没效果。
大概够用的了吧(汗lll·ω·),我就不信下次遇到这种事儿还解决不了叻!