今天學習爬蟲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·ω·),我就不信下次遇到這種事兒還解決不了叻!