您好,登錄后才能下訂單哦!
小編給大家分享一下requests第三方庫在測試中怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
官方文檔: http://www.python-requests.org/en/master/
第三方中文文檔: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
使用requests發(fā)送get請求,首先需安裝requests模塊,然后導(dǎo)入使用;
pip install requests import requests
然后可以使用例如:r = requests.get('https://www.baidu.com')
,方法獲取某個網(wǎng)頁,r表示一個 Response 對象,我們從這個對象中獲取所有我們想要的信息;
import requests from requests.cookies import RequestsCookieJar r = requests.get('https://www.baidu.com')
如果我們想要手動構(gòu)建URl,可以使用params關(guān)鍵字來傳參,如:
r = requests.get('https://www.baidu.com') ,params={'id': 'abc'}) print(r.url) # 輸出:https://www.baidu.com/?id=abc;
所以我們可以知道如果是手工構(gòu)建 URL,那么數(shù)據(jù)會以鍵/值對的形式置于 URL 中,跟在一個問號的后面;
r.text
:返回響應(yīng)對象,Unicode型數(shù)據(jù),主要取文本;
r = requests.get('https://www.baidu.com') print(r.text)
r.content
:返回響應(yīng)對象,bytes型,二進制數(shù)據(jù),主要取圖片和文件等,中文顯示為字符;
r.url
:獲取當(dāng)前請求的url;
r.json()
:Requests中內(nèi)置的JSON解碼器;
r.encoding
:編碼方式;
r.status_code
:狀態(tài)響應(yīng)碼;
r.headers
:響應(yīng)頭;
r.cookies
:返回cookie;
POST請求方式的編碼方式,也就是Content-Type的類型一般有3種,分別是:
application/x-www-form-urlencoded:以form表單形式提交數(shù)據(jù),使用的時候只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可;
import requests from requests.cookies import RequestsCookieJar payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post("http://httpbin.org/post", data=payload ) print(r.text) # 輸出打印中的headers中是"Content-Type": "application/x-www-form-urlencoded",所以我們可以知道application/x-www-form-urlencoded是默認的post請求的Content-Type
application/json:以json格式提交數(shù)據(jù),主要是用于發(fā)送ajax請求中,動態(tài)加載數(shù)據(jù);
multipart/form-data:一般用于上傳文件,使用時需要將文件傳給requests.post()的files參數(shù);
為了防止服務(wù)器響應(yīng)緩慢,導(dǎo)致客戶端處理異常,requests請求大多設(shè)置 timeout 參數(shù),例如:requests.get(‘ http://baidu.com ‘, timeout=10),如果需要讓 request 永遠等待,則傳入一個 None 作為 timeout 的值;
import requests from requests.cookies import RequestsCookieJar r = requests.get('https://www.baidu.com', timeout=0.001) print(r) # 執(zhí)行代碼時會報錯,因為在0.001秒時服務(wù)器響應(yīng)還沒有完成
Cookie 的返回對象為 RequestsCookieJar,它的行為和字典類似,但接口更為完整,適合跨域名跨路徑使用,可以把 Cookie Jar 傳到 Requests 中來請求登錄頁面,例如:r = requests.get('[https://www.baidu.com/',](https://www.baidu.com/',) cookies=jar)
;
我們來嘗試一下使用cookie獲取登錄豆瓣官網(wǎng)之后的信息
獲取cookie
from requests.sessions import Session # 返回一個會話的上下文管理器對象 requests = Session() headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'} date = {'ck':'', 'name':'xxxxxxxx', 'password': 'xxxxxxxx', 'remember':'false', 'ticket': ''} result = requests.post('https://accounts.douban.com/j/mobile/login/basic', data=date, headers=headers) print(result.text) # 拿到cookie cookies = result.cookies for i in cookies: print(i) for item in cookies.iteritems(): print(item) print(cookies.get_dict()) print(cookies.list_paths()) print(cookies.list_domains()) print(cookies.items())
獲取使用cookie請求登錄頁面
from requests.cookies import RequestsCookieJar import requests jar = RequestsCookieJar() jar.set('bid', 'OvpnenMUNWo', domain='.douban.com', path='/') jar.set('dbcl2', r'"153039786:aYRnqJukECk"', domain='.douban.com', path='/') r = requests.get('https://www.douban.com/', cookies=jar) print(r.text)
看完了這篇文章,相信你對“requests第三方庫在測試中怎么用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。