requests(2)

1、會話對象

會話保持:在同一session實例之間會保持cookie(非發(fā)起請求時設置的方法級參數(shù))

發(fā)起請求時設置的方法層的參數(shù)覆蓋會話的參數(shù)。但若是單獨指定設置,而非在發(fā)起請求時設置參數(shù)指定,會與已設置的會話層數(shù)據(jù)合并

s=requests.session()

s.headers.update({"k1":"v1"})

r=s.get("http://httpbin.org/headers",headers={"k2":"v2"})

print(r.text)

即使使用了會話,在前一請求發(fā)起時指定的方法級中的cookie,在下一請求中不會生效

如果要為會話設定cookies,可使用上下文管理器,保證在with塊中的都是同一cookies。退出with區(qū)塊會話關閉

with requests.Session() as s:

? ? s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')

2、請求與響應:

響應中包含請求對象,可通過響應獲得請求對象? r.request.headers

3、PreparedRequest???

4、https請求,SSL證書驗證

可以在調(diào)用發(fā)起請求時,設置verify,可以傳入CA證書的路徑,也可設置為flase則忽略證書驗證,默認是true,使用的是requests自帶的被信任的根證書,來自Mozilla trust store,也可在系統(tǒng)中安裝certifi定時更新證書

也可以設置整個會話的證書,調(diào)用s.verfiy=證書路徑

5、控制響應工作流:

可在發(fā)起請求時設置stream=True,推遲下載響應體內(nèi)容,直到訪問response.content響應內(nèi)容屬性,或使用iter_content(chunk_size)方法指定下載字節(jié)數(shù)(一塊一塊下載)或iter_lines()(一行一行下載)遍歷響應內(nèi)容時才開始下載。

開啟此設置開啟需要調(diào)用response.close手動釋放連接,或使用上下文管理器

with requests.get('http://httpbin.org/get', stream=True) as r:

? ? # 在此處理響應。

未開啟stream的連接,將在使用response.content之后自動釋放連接

6、大文件支持上傳流

with open('massive-body') as f:

? ? requests.post('http://some.url/streamed', data=f)

7、一個請求發(fā)送多個文件

將文件加入到元祖列表中,元祖格式為(form_field_name, file_info):

url = 'http://httpbin.org/post'

multiple_files = [

? ? ? ? ('images', ('foo.png', open('foo.png', 'rb'), 'image/png')),

? ? ? ? ('images', ('bar.png', open('bar.png', 'rb'), 'image/png'))]

r = requests.post(url, files=multiple_files)? ? ? ?

8、事件掛鉤

可以使用鉤子,操控發(fā)送請求過程或處理信號,發(fā)送請求時,指定hooks參數(shù),值為字典{鉤子名字:回調(diào)函數(shù)},如:攜帶hooks=dict(response=print_url)

9、代理

可在發(fā)送請求前,使用proxies參數(shù)指定代理地址,類型為字典:{"http":"XX"},也可指定某一請求需要使用代理proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容