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

 


免責聲明!

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



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