在python2環境下:
response.text是unicode數據類型,而response.content是字符串類型

python2環境下數據類型
分別查看response.text和response.content的內容
接下來分別print response.text和response.content的內容,發現response.content可以正常顯示
,而response.text依然是亂碼,為了解決這一問題可以查看下默認的編碼方式

默認編碼方式
設置編碼方式為utf-8
r.encoding='utf-8' #此處寫成utf8也可以
然后分別print r.text和r.content可以看到文字部分顯示正常
在python3環境下:
response.text是str數據類型,而response.content是bytes類型

python3環境下數據類型
查看r.text和r.content文字均未正確顯示出來,print之后也沒有正確顯示,依然是默認編碼的問題
設置編碼方式
r.encoding='utf-8'
此時查看r.text發現文字部分已經可以正確顯示
由於r.content是bytes類型,還需要解碼,即通過r.content.decode()查看即可正常顯示文字部分
總結:由於我們所要抓取的網站有的進行了編碼設置,有的沒有設置編碼方式依然是默認的ISO-8859-1編碼方式,所以可以優先使用response.content,因為response.content不需要設置編碼方式即可正常獲取內容,只需要注意response.content在python2環境下不需要解碼,在python3環境下需要解碼即可。
另外,一般對於獲取的響應內容編碼的問題,可以先print,依然沒有正常顯示文字,可以設置編碼方式為utf8或者gbk,通常能解決大部分編碼的問題。
作者:python_spider
鏈接:https://www.jianshu.com/p/2804b69e3383
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。