Requests模塊獲取響應(yīng)內(nèi)容
響應(yīng)包括響應(yīng)行、響應(yīng)頭、響應(yīng)正文內(nèi)容,這些返回的響應(yīng)信息都可以通過Requests模塊獲取。這些 獲取到的響應(yīng)內(nèi)容也是接口測(cè)試執(zhí)行得到的實(shí)際結(jié)果。
獲取響應(yīng)行
獲取響應(yīng)頭
獲取其它響應(yīng)信息
代碼示例:
# 導(dǎo)入requests模塊 import requests r = requests.get("https://www.baidu.com") print(r.status_code) #響應(yīng)狀態(tài)碼 print(r.reason) #響應(yīng)信息 print(r.headers) #獲取響應(yīng)頭 返回的是dict類型,可以繼續(xù)使用get獲取指定的值 # 獲取其它響應(yīng)信息: print(r.url) # 獲取請(qǐng)求地址 print(r.cookies) #獲取cookies print(r.encoding) #獲取響應(yīng)的編碼格式
響應(yīng)正文
依據(jù)不同響應(yīng)正文內(nèi)容的情況,Requests模塊有四種不同的處理方式
一、普通文本數(shù)據(jù)
Requests 會(huì)自動(dòng)解碼來自服務(wù)器的內(nèi)容。大多數(shù) unicode 字符集都能被無縫地解碼。請(qǐng)求發(fā)出后, Requests 會(huì)基于 HTTP 頭部對(duì)響應(yīng)的編碼作出有根據(jù)的推測(cè)。當(dāng)你訪問 response.text 之時(shí),Requests 會(huì)使用其 推測(cè)的文本編碼。response.text使用后亂碼的幾率很大,可以先用response.encoding 屬性來改變編碼,如下所示:
代碼示例:
# 1,普通文本數(shù)據(jù) url = "http://www.hnxmxit.com/" response = requests.get(url=url) print(response.content.decode("utf-8"))
查看執(zhí)行結(jié)果:
?二、二進(jìn)制數(shù)據(jù)
對(duì)于非文本請(qǐng)求,response.content能以字節(jié)的方式訪問請(qǐng)求響應(yīng)體。且Requests模塊會(huì)自動(dòng)為你解碼 gzip 和 deflate 傳輸編碼的響應(yīng)數(shù)據(jù)
# 2,二進(jìn)制數(shù)據(jù) response =requests.get("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2073439784,2147418910&fm=26&gp=0.jpg") print(type(response.content)) # 輸出二進(jìn)制的圖片數(shù)據(jù)類型 with open("E:/baidu.gif","wb") as f: # 將二進(jìn)制數(shù)據(jù)寫入到本地文件 f.write(response.content)
查看執(zhí)行結(jié)果:
?三、json數(shù)據(jù)
Requests 中有一個(gè)內(nèi)置的 JSON 解碼器 response.json(),處理返回的 JSON 數(shù)據(jù)。使用后,會(huì)把返回的數(shù)據(jù) 作為一個(gè)python中的json數(shù)據(jù)對(duì)象看待。如果 JSON 解碼失敗, response.json() 就會(huì)拋出一個(gè)異常。
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) # 響應(yīng)是str類型 ,所以我們需要將響應(yīng)轉(zhuǎn)換成json json_obj = response.json() token = json_obj['access_token'] print(token)
四、原始響應(yīng)內(nèi)容(一般不使用)
如果需要獲取來自服務(wù)器的原始套接字響應(yīng),可以使用response.raw,如果確定要獲取的話,還需要在初始請(qǐng) 求中設(shè)置stream=True。
# 4,原始響應(yīng)內(nèi)容(一般不使用) url = "https://www.baidu.com" response = requests.get(url=url,stream=True) print(response.raw.read(10))
實(shí)戰(zhàn)案例
光學(xué)理論是沒用的,要學(xué)會(huì)跟著一起敲,要?jiǎng)邮謱?shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時(shí)候可以搞點(diǎn)實(shí)戰(zhàn)案例來學(xué)習(xí)。
如果對(duì)你有幫助的話,點(diǎn)個(gè)贊收個(gè)藏,給作者一個(gè)鼓勵(lì)。也方便你下次能夠快速查找。
如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測(cè)試人員一起學(xué)習(xí)進(jìn)步
在適當(dāng)?shù)哪挲g,選擇適當(dāng)?shù)膷徫唬M量去發(fā)揮好自己的優(yōu)勢(shì)。
我的自動(dòng)化測(cè)試開發(fā)之路,一路走來都離不每個(gè)階段的計(jì)劃,因?yàn)樽约合矚g規(guī)劃和總結(jié),文章來源:http://www.zghlxwxcb.cn/news/detail-596066.html
測(cè)試開發(fā)視頻教程、學(xué)習(xí)筆記領(lǐng)取傳送門!??!文章來源地址http://www.zghlxwxcb.cn/news/detail-596066.html
到了這里,關(guān)于Python+Requests模塊獲取響應(yīng)內(nèi)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!