python+requests——響應內容以及設置編碼格式


響應內容



我們能讀取服務器響應的內容。再次以 GitHub 時間線為例:

>>> import requests

>>> r = requests.get('https://api.github.com/events')

>>> r.text

u'[{"repository":{"open_issues":0,"url":"https://github.com/...

Requests 會自動解碼來自服務器的內容。大多數 unicode 字符集都能被無縫地解碼。



請求發出后,Requests 會基於 HTTP 頭部對響應的編碼作出有根據的推測。



當你訪問 r.text 之時,Requests 會使用其推測的文本編碼。你可以找出 Requests 使用了什么編碼,並且能夠使用 r.encoding 屬性來改變它:

>>> r.encoding                     #返回編碼格式 'utf-8'                            

>>> r.encoding = 'ISO-8859-1'     #設置編碼格式




如果你改變了編碼,每當你訪問 r.text ,Request 都將會使用 r.encoding 的新值。

你可能希望在使用特殊邏輯計算出文本的編碼的情況下來修改編碼。

比如 HTTP 和 XML 自身可以指定編碼。這樣的話,你應該使用 r.content 來找到編碼,然后設置 r.encoding 為相應的編碼。這樣就能使用正確的編碼解析 r.text 了。


----------------------------------------------------------------------------

import requests

response = requests.get("https://www.baidu.com")



print(response.url)                         #返回請求的url:https://www.baidu.com/

print(response.status_code)                #獲取響應狀態碼:200 print(response.encoding) #返回當前的編碼格式:ISO-8859-1 response.encoding = 'utf-8' #設置編碼格式 print(response.encoding) #返回:utf-8 說明上一步設置成功



print(response.content)       #返回:b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8>
                               
                                      <meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer>

執行結果:


https://www.baidu.com/

200

ISO-8859-1

utf-8


b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8>

<meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer>

=============================================================================================================================

 


免責聲明!

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



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