Requests(4):Requests模組獲取響應內容
阿新 • • 發佈:2022-03-31
Requests模組獲取響應內容
響應包括響應行、響應頭、響應正文內容,這些返回的響應資訊都可以通過Requests模組獲取。這些 獲取到的響應內容也是介面測試執行得到的實際結果。
獲取響應行
獲取響應頭
獲取其它響應資訊
程式碼示例:
# 匯入requests模組 import requests r = requests.get("https://www.baidu.com") print(r.status_code) #響應狀態碼 print(r.reason) #響應資訊 print(r.headers) #獲取響應頭 返回的是dict型別,可以繼續使用get獲取指定的值 # 獲取其它響應資訊:print(r.url) # 獲取請求地址 print(r.cookies) #獲取cookies print(r.encoding) #獲取響應的編碼格式
響應正文
依據不同響應正文內容的情況,Requests模組有四種不同的處理方式
一、普通文字資料
Requests 會自動解碼來自伺服器的內容。大多數 unicode 字符集都能被無縫地解碼。請求發出後, Requests 會基於 HTTP 頭部對響應的編碼作出有根據的推測。當你訪問 response.text 之時,Requests 會使用其 推測的文字編碼。response.text使用後亂碼的機率很大,可以先用response.encoding 屬性來改變編碼,如下所示:
程式碼示例:
# 1,普通文字資料 url = "http://www.hnxmxit.com/" response = requests.get(url=url) print(response.content.decode("utf-8"))
檢視執行結果:
二、二進位制資料
對於非文字請求,response.content能以位元組的方式訪問請求響應體。且Requests模組會自動為你解碼 gzip 和 deflate 傳輸編碼的響應資料
# 2,二進位制資料 response =requests.get("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2073439784,2147418910&fm=26&gp=0.jpg") print(type(response.content)) # 輸出二進位制的圖片資料型別 with open("E:/baidu.gif","wb") as f: # 將二進位制資料寫入到本地檔案 f.write(response.content)
檢視執行結果:
三、json資料
Requests 中有一個內建的 JSON 解碼器 response.json(),處理返回的 JSON 資料。使用後,會把返回的資料 作為一個python中的json資料物件看待。如果 JSON 解碼失敗, response.json() 就會丟擲一個異常。
url = 'https://api.weixin.qq.com/cgi-bin/token' data = {'grant_type':'client_credential', 'appid':'wxf14419077f707856', 'secret':'92a113bd4b5ffdc72144740dc7123c99'} response = requests.get(url=url,params=data) # 響應是str型別 ,所以我們需要將響應轉換成json json_obj = response.json() token = json_obj['access_token'] print(token)
四、原始響應內容(一般不使用)
如果需要獲取來自伺服器的原始套接字響應,可以使用response.raw,如果確定要獲取的話,還需要在初始請 求中設定stream=True。
# 4,原始響應內容(一般不使用) url = "https://www.baidu.com" response = requests.get(url=url,stream=True) print(response.raw.read(10))