Python requests模块cookie实例解析


Posted in Python onApril 14, 2020

cookie并不陌生,与session一样,能够让http请求前后保持状态。与session不同之处,在于cookie数据仅保存于客户端。requests也提供了相应到方法去处理cookie。

在python requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们去使用cookie。当我们想设置方法级别中的请求时,可以如下面示例一样操作。

import requests
s = requests.session()
# 第一步:发送一个请求,用于设置请求中的cookies
cookies = dict(cookies_are='cookie1')
# tips: http://httpbin.org能够用于测试http请求和响应
r1 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r1.text)
# 第二步:发送一个请求,用于再次设置请求中的cookies
cookies = dict(cookies_are='cookie2')
r2 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r2.text)

运行结果

# r1.text
{
 "cookies": {
  "cookies_are": "cookie1"
 }
}
# t2.text
{
 "cookies": {
  "cookies_are": "cookie2"
 }
}

从结果中可以看出,该方法让cookie只作用了单个请求,因为方法级别的参数不会被跨请求保持,这是requests中session对象的机制,这里不再赘述。那么,如果我们想跨请求保持cookie呢?这里依旧可以应用session对象的跨请求机制,方法如下:

import requests
s = requests.session()
s.cookies.update({'cookies_are': 'cookie'})
r = s.get(url='http://httpbin.org/cookies')
print(r.text)

值得一提的是,除了直接用字典去赋值cookie之外,requests还提供了RequestsCookieJar对象供我们使用,它的行为类似字典,但接口更为完整,适合跨域名跨路径使用。来看一个官方文档中的示例。

import requests
jar = 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)

运行结果

{
 "cookies": {
  "tasty_cookie": "yum"
 }
}

从结果中,可以看出我们利用RequestsCookieJar对象,达到了根据不同请求路径,发送不同cookie的效果,进一步增加了操作cookie的灵活性。

参考文档

https://github.com/psf/requests/blob/master/requests/cookies.py

https://requests.readthedocs.io/en/master/user/quickstart/#cookies

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python下的Mysql模块MySQLdb安装详解
Apr 09 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python3.7 sys模块的具体使用
Jul 22 Python
详解Django 时间与时区设置问题
Jul 23 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Django中的DateTimeField和DateField实现
Feb 24 Python
Python requests模块session代码实例
Apr 14 #Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 #Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 #Python
Jupyter Notebook输出矢量图实例
Apr 14 #Python
pygame实现弹球游戏
Apr 14 #Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 #Python
Python request操作步骤及代码实例
Apr 13 #Python
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
php empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
解析Python编程中的包结构
2015/10/25 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python异常处理例题整理
2019/07/07 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
Python netmiko模块的使用
2020/02/14 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
PHP面试题集
2016/12/18 面试题
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
总经理司机职责
2014/02/02 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
大学生社团活动总结
2014/04/26 职场文书
文员求职信
2014/07/15 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
垂直极限观后感
2015/06/08 职场文书
高一作文之乐趣
2019/11/21 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
MySQL 数据类型详情
2021/11/11 MySQL