Python requests模塊cookie實(shí)例解析
cookie并不陌生,與session一樣,能夠讓http請(qǐng)求前后保持狀態(tài)。與session不同之處,在于cookie數(shù)據(jù)僅保存于客戶端。requests也提供了相應(yīng)到方法去處理cookie。
在python requests模塊-session中,我們知道了requests中的session對(duì)象能夠在請(qǐng)求之間保持cookie,它極大地方便了我們?nèi)ナ褂胏ookie。當(dāng)我們想設(shè)置方法級(jí)別中的請(qǐng)求時(shí),可以如下面示例一樣操作。
import requestss = requests.session()# 第一步:發(fā)送一個(gè)請(qǐng)求,用于設(shè)置請(qǐng)求中的cookiescookies = dict(cookies_are=’cookie1’)# tips: http://httpbin.org能夠用于測(cè)試http請(qǐng)求和響應(yīng)r1 = s.get(url=’http://httpbin.org/cookies’, cookies=cookies)print(r1.text)# 第二步:發(fā)送一個(gè)請(qǐng)求,用于再次設(shè)置請(qǐng)求中的cookiescookies = dict(cookies_are=’cookie2’)r2 = s.get(url=’http://httpbin.org/cookies’, cookies=cookies)print(r2.text)
運(yùn)行結(jié)果
# r1.text{ 'cookies': { 'cookies_are': 'cookie1' }}# t2.text{ 'cookies': { 'cookies_are': 'cookie2' }}
從結(jié)果中可以看出,該方法讓cookie只作用了單個(gè)請(qǐng)求,因?yàn)榉椒?jí)別的參數(shù)不會(huì)被跨請(qǐng)求保持,這是requests中session對(duì)象的機(jī)制,這里不再贅述。那么,如果我們想跨請(qǐng)求保持cookie呢?這里依舊可以應(yīng)用session對(duì)象的跨請(qǐng)求機(jī)制,方法如下:
import requestss = requests.session()s.cookies.update({’cookies_are’: ’cookie’})r = s.get(url=’http://httpbin.org/cookies’)print(r.text)
值得一提的是,除了直接用字典去賦值cookie之外,requests還提供了RequestsCookieJar對(duì)象供我們使用,它的行為類似字典,但接口更為完整,適合跨域名跨路徑使用。來看一個(gè)官方文檔中的示例。
import requestsjar = requests.cookies.RequestsCookieJar()jar.set(’tasty_cookie’, ’yum’, domain=’httpbin.org’, path=’/cookies’)jar.set(’gross_cookie’, ’blech’, domain=’httpbin.org’, path=’/elsewhere’)url = ’http://httpbin.org/cookies’r = requests.get(url, cookies=jar)print(r.text)
運(yùn)行結(jié)果
{ 'cookies': { 'tasty_cookie': 'yum' }}
從結(jié)果中,可以看出我們利用RequestsCookieJar對(duì)象,達(dá)到了根據(jù)不同請(qǐng)求路徑,發(fā)送不同cookie的效果,進(jìn)一步增加了操作cookie的靈活性。
參考文檔
https://github.com/psf/requests/blob/master/requests/cookies.py
https://requests.readthedocs.io/en/master/user/quickstart/#cookies
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)2. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法3. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法4. 得到XML文檔大小的方法5. ASP.NET Core實(shí)現(xiàn)中間件的幾種方式6. 如何在jsp界面中插入圖片7. jsp實(shí)現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫的方法8. 利用CSS3新特性創(chuàng)建透明邊框三角9. XML入門的常見問題(二)10. ASP常用日期格式化函數(shù) FormatDate()
