最近在學習python爬蟲,使用requests的時候遇到了不少的問題,比如說在requests中如何使用cookies進行登錄驗證,這可以查看這篇文章。這篇博客要解決的問題是如何避免在使用requests的時候出現亂碼。
1
2
3
|
import requests res = requests.get( "https://www.baidu.com" ) print res.content |
以上就是使用requests進行簡單的網頁請求數據的方式。但是很容易出現亂碼的問題。
我們可以通過在網頁上右擊查看源代碼中查看編碼方式:content="text/html;charset=utf-8"->
我們便可以知道網頁的編碼方式是utf8.由于中文的編碼方式為gbk,所以我們需要將編碼方式改變為gbk。
我查看了一些資料,說requests可以自動獲取網頁的編碼方式的,并且通過res.encode輸出一看是utf8,是的 沒錯。但是輸出來的內容中文存在亂碼。 有說可以直接指定獲取到內容的encode屬性即可,"res.encode='gbk'",但我嘗試了不可以的。
python內部的編碼方式為utf8,也就是說python在處理其他字符串內容的時候首先要先將內容轉化為utf8的編碼方式,然后在解碼為你想要的編碼方式輸出。
例如s=”中文” 為str類型的字符串 編碼方式為gb2312
需要 s.decode("gb2312")將gb2312編碼方式的內容解碼為Unicode編碼
然后輸出的時候要將s的編碼方式規定為gbk->s.encode("gbk")
言歸正傳,我們獲取到網頁內容res后, 通過res.content.decode("utf8","ignore").encode("gbk","ignore")就不會有亂碼了。
這里所使用的ignore屬性意思是忽略其中有一場的編碼,僅顯示有效的編碼。
總結
以上就是本文關于python中requests爬去網頁內容出現亂碼問題解決方法的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/winterto1990/article/details/51217363