首页 > 编程语言 > 详细

Python爬虫:decode('utf-8')之后还是乱码的解决

时间:2021-01-18 11:31:37      阅读:106      评论:0      收藏:0      [点我收藏+]

今天学习爬虫ing,结果不出所料的遇到了乱码,捣鼓了半天,翻了网上数种方法,终于在快裂开的时候,忽然眼前一亮,发现了一个新方法,于是乎竟然解决了。

————————————————————分割线————————————————————

这是decode的那部分代码。

html = etree.HTML(r.text)
s = etree.tostring(html).decode(utf-8)
print(s)

下面是一部分结果,可以看到本该是中文的地方还都是乱码,虽然已经decode过了。

技术分享图片

 由于不懂基本原理,只能到网上找各种方法直接去试QAQ。

 

下面是解决我的问题的代码

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库

还没学到这部分,略(●‘?‘●)。

前两个方法的原文见这里

3.先把response给encode

r=requests.get(url)
r.encoding=gb2312#解决中文不能正常显示
s=etree.HTML(r.text)
result=etree.tostring(s)

这里是那个作者涉及的原网页编码是‘gb2312‘,可在网页源代码的charset查看。我爬取的网站是utf-8,但是改过来的话试验这种方法也没效果。

原文见这里。

 

大概够用的了吧(汗lll·ω·),我就不信下次遇到这种事儿还解决不了叻!

Python爬虫:decode('utf-8')之后还是乱码的解决

原文:https://www.cnblogs.com/amori/p/14291622.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!