request模塊在Python2和Python3的區別


在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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM