1. 程式人生 > 實用技巧 >python之requests庫分析

python之requests庫分析

1.requests庫傳送請求時,params和data、json的區別

params的時候之間接把引數加到url後面,只在get請求時使用,data、json是用在post請求,json是傳遞的json格式的資料

params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
params是一個字典或者bytes型別,用來查詢
data: (optional) Dictionary or list of tuples ``[(key, value)]`` (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.

data可以是一個字典或者元組或者bytes或者檔案物件,用在請求的body
json: (optional) json data to send in the body of the :class:`Request`.
json用於請求body,且傳輸的是json格式資料

2.requests庫響應結果content和text、json區別
text:
Content of the response, in unicode 可以接收文字格式的響應報文,unicode編碼
json:Returns the json-encoded content of a response, if any
注意:If the response body does not contain valid json 如果響應body不是json格式的會報錯,所以只有當響應body是json格式才可以用此方式接收響應報文
content:Content of the response, in bytes  接收bytes格式的報文,一般用來接收圖片或者檔案二進位制
text、json是屬性方法,呼叫不需要加(),而json是普通方法,呼叫需要加()
response.content
response.text
response.json()

requests庫response 響應內容
r.url                      #獲取請求url
r.encoding                       #獲取當前的編碼
r.encoding = 'utf-8'             #設定編碼
r.text #以encoding解析返回內容。字串方式的響應體,會自動根據響應頭部的字元編碼進行解碼。 r.content #以位元組形式(二進位制)返回。位元組方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮。 r.headers #以字典物件儲存伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回None r.status_code #響應狀態碼 r.raw #返回原始響應體,也就是 urllib 的 response 物件,使用 r.raw.read() r.ok # 檢視r.ok的布林值便可以知道是否登陸成功 #*特殊方法*# r.json() #Requests中內建的JSON解碼器,以json形式返回,前提返回的內容確保是json格式的,不然解析出錯會拋異常 r.raise_for_status() #失敗請求(非200響應)丟擲異常


基本身份認證(HTTP Basic Auth)
import requests
from requests.auth import HTTPBasicAuth
 
r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=HTTPBasicAuth('user', 'passwd'))
# r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=('user', 'passwd'))    # 簡寫
print(r.json())