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

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

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

这是decode的那部分代码。

html =etree.HTML(r.text)

s= etree.tostring(html).decode('utf-8')print(s)

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

16081383c5b422ed30da0212acdc928e.png

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

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

html =etree.HTML(r.text)

s= etree.tostring(html,encoding='utf-8').decode('utf-8')#就是在tostring里面加了个encodingprint(s)

另外再总结一下网上的各种其他解决方法,也许这次没用下次就有用了呢,以后直接来这里copy就好了23333。希望回来能弄明白这些道理,照搬的话只知其然,不知其所以然也。

1.unicode_escape

response.text.encode('utf-8').decode('unicode_escape')

unicode_escape本质上是将unicode的内存编码值进行存储,读取文件时在反向转换回来。

2.直接用json

importjson

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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值