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'}