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

posted @ 2021-01-18 10:47  Amorius  阅读(4449)  评论(0编辑  收藏  举报