惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
博客园 - 【当耐特】
I
InfoQ
腾讯CDC
人人都是产品经理
人人都是产品经理
H
Help Net Security
Y
Y Combinator Blog
B
Blog
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
D
Docker
博客园 - 聂微东
B
Blog RSS Feed
G
Google Developers Blog

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
什么是Cookie,requests处理Cookie的多种方法-互联网IT百科
2019-07-19 · via 老董笔记

  什么是Cookie

  浏览器访问网页的时候,服务器就会返回响应头,如果响应头中包含一些字符串,浏览器把这些字符串以文件的形式存储到本地电脑上。再次请求该站的一个网页时请求头就会携带上这个字符串,这个字符串就是cookie。

  Cookie的场景

  在当当网A页面购买了A书,B页面买了B书,C页面买了C书。虽然是不同的页面但最后订单中可以显示出所有商品。为什么呢,说明服务器对用户有1个标记。即使访问不同网页也能知道是1个人。这种标记就通过Cookies实现。

  如果一个http响应中包含了cookie,那么我们可以利用 cookies属性拿到:

# -*- coding: utf-8 -*-

headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get("https://www.baidu.com/",headers=headers)
obj = r.cookies
print(obj)
<RequestsCookieJar[<Cookie BAIDUID=117CD9E1A49D4164203C4170FD9D5929:FG=1 for .baidu.com/>, <Cookie BIDUPSID=117CD9E1A49D4164645C26EDA9574292 for .baidu.com/>, <Cookie H_PS_PSSID=34442_35106_31254_34903_34504_34916_34813_26350_34868_22160_35018 for .baidu.com/>, <Cookie PSTM=1636619939 for .baidu.com/>, <Cookie BDSVRTM=0 for www.baidu.com/>, <Cookie BD_HOME=1 for www.baidu.com/>]>

  r.cookies值为RequestsCookieJar对象,它的行为和字典类似,我们可以遍历来获取值。

# -*- coding: utf-8 -*-

headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get("https://www.baidu.com/",headers=headers)
obj = r.cookies
for k,v in obj.items():
    print(f'{k}:{v}')
BAIDUID:4C1BE25A9C59436E6FBDE1156E42A608:FG=1
BIDUPSID:4C1BE25A9C59436E54B468F3AEB2DEB6
H_PS_PSSID:35104_31254_35048_35096_34504_34917_34578_34813_34815_26350_34971_34867_35018
PSTM:1636620094
BDSVRTM:0
BD_HOME:1

  也可以通过requests.utils.dict_from_cookiejar()方式来转为字典。

# -*- coding: utf-8 -*-
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get("https://www.baidu.com/",headers=headers)
cookiejar = r.cookies
dic = requests.utils.dict_from_cookiejar(cookiejar)
print(dic)
{'BAIDUID': '70866C970551C41F5F02A931FE450B1B:FG=1', 'BIDUPSID': '70866C970551C41F0AE52BFE081C9248', 'H_PS_PSSID': '34949_35104_31254_35050_34903_34504_34916_34579_34812_26350_34970_34867_35018', 'PSTM': '1636620212', 'BDSVRTM': '0', 'BD_HOME': '1'}

  如果在请求网页时要想发送cookies到服务器,可以有3种方法选择

  1)直接使用cookies参数

  2)因为cookies是请求头的一部分,也可以放在headers里去请求(要把字典式的cookie转为key1=value1;key2=value2字符串),大部分情况下是没问题的,有些站却不行!

  3)RequestsCookieJar对象的行为和字典类似,但接口更为完整,可以把利用CookieJar来传参请求。

# -*- coding: utf-8 -*-
url = 'http://httpbin.org/cookies'

# 字典形式传入
cookies = {'k1':'v1','k2':'v2'}
r = requests.get(url, cookies=cookies)
print(r.text)
print('============')

# cookie转为key1=value1;key2=value2字符串
cookie_str = "k1=v1;k2=v2"
headers = {'Cooike':cookie_str}
r = requests.get(url, headers=headers) # 这个站未生效
print(r.text)
print('============')

#  RequestsCookieJar对象形式
jar = requests.cookies.RequestsCookieJar()
jar.set('k1', 'v1', domain='httpbin.org', path='/cookies')
jar.set('k2', 'v2', domain='httpbin.org', path='/cookies')
r = requests.get(url, cookies=jar)
print(r.text)
print('============')
{
  "cookies": {
    "k1": "v1", 
    "k2": "v2"
  }
}

============
{
  "cookies": {}
}

============
{
  "cookies": {
    "k1": "v1", 
    "k2": "v2"
  }
}

============

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会