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