Python requests模块cookie实例解析

作者:酌三巡 时间:2023-11-18 15:44:56 

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

来源:https://www.cnblogs.com/zhuosanxun/p/12684894.html

标签:python,requests,cookie
0
投稿

猜你喜欢

  • windows下Virtualenvwrapper安装教程

    2023-11-08 02:15:20
  • Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题

    2022-06-09 20:07:37
  • Pycharm中安装pywin32报错问题及解决

    2022-09-29 19:58:14
  • 快速解释如何使用pandas的inplace参数的使用

    2021-07-20 16:36:29
  • JavaScript前端实用的工具函数封装

    2024-04-25 13:15:02
  • MySQL详解如何优化查询条件

    2024-01-26 06:52:05
  • Python入门教程(二十二)Python的类和对象

    2021-11-22 06:00:56
  • MySQL索引的基本语法

    2024-01-26 00:48:44
  • 在ubuntu16.04中将python3设置为默认的命令写法

    2022-06-21 10:12:41
  • Python可视化神器pyecharts之绘制箱形图

    2021-08-04 03:40:53
  • MySQL转义字符的实际应用

    2010-08-31 14:55:00
  • 使用python实现http及ftp服务进行数据传输的方法

    2021-08-26 01:20:19
  • js 数据存储和DOM编程

    2024-02-24 07:52:31
  • Python Matplotlib库入门指南

    2022-04-27 11:51:01
  • python数据处理67个pandas函数总结看完就用

    2023-02-24 10:19:32
  • Python发送邮件封装实现过程详解

    2021-06-13 09:19:41
  • python如何编写类似nmap的扫描工具

    2022-05-09 15:19:44
  • Bootstrap每天必学之工具提示(Tooltip)插件

    2023-07-02 05:25:22
  • 教你如何升级SQL Server数据库系统

    2009-01-19 14:42:00
  • 批标准化层 tf.keras.layers.Batchnormalization()解析

    2023-06-18 23:35:17
  • asp之家 网络编程 m.aspxhome.com