1. 程式人生 > 其它 >Requests(4):Requests模組獲取響應內容

Requests(4):Requests模組獲取響應內容

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))