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·ω·),我就不信下次遇到这种事儿还解决不了叻!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM