requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象求求该网站的其他网页都会默认使用该session之前使用的cookie等参数,类似于以下urllib库的使用:cookie =http.cookiejar.CookieJar()

handler = urllib.request.HttpCookieProcessor(cookie)

opener = urllib.request.build_opener(handler)

然后该opener里面就保存了cookie,以后无论访问该网站的那个网页都是自动的带上同一个cookie,此cookie就是你第一次登陆该网站时的cookie,

opener(url)---url可以使该网站的任意网页,这就是跨请求的意思,请求不同的网站就是跨请求携带同样的cokkie等参数.

如何在requests session中手动设置cookie????

在使用python requests库时遇到一个问题,就是如何在session中设置对所有请求都生效的cookie?requests中的session对象一大特性就是它会自动为你管理cookie,当你登录一个页面时,它可以自动识别response中的set cookie头,然后为下面的请求一直维持这个cookie。不过我在使用的过程中,因为目标网站登录有验证码,所以打算每次运行时手动登录页面获取cookie,然后再把cookie写到代码变量中。这里遇到的问题就是当在get函数中传入cookie变量时,cookie只对当前的请求进行生效,下一次调用get还需要再传入一次cookie,否则发出去的请求是默认不会带有cookie的。

如下:import requests

import time

mycookie = { "PHPSESSID":"56v9clgo1kdfo3q5q8ck0aaaaa" }

x = requests.session()

x.get("http://127.0.0.1:80",cookies = mycookie)

time.sleep(5)

x.get("http://127.0.0.1:80"

运行脚本后,通过抓包发现,第一次get请求的中含有我自定义的cookie,第二次请求中却没有。因为我要对很多http接口发送请求,所以如果在每个get里面都加入一个cookie变量的话,写起来就有些麻烦了。于是google了一下,找到了如下的解决方法:import requests

import time

mycookie = { "PHPSESSID":"56v9clgo1kdfo3q5q8ck0aaaaa" }

x = requests.session()

requests.utils.add_dict_to_cookiejar(x.cookies,{"PHPSESSID":"07et4ol1g7ttb0bnjmbiqjhp43"})

x.get("http://127.0.0.1:80",cookies = mycookie)

time.sleep(5)

x.get("http://127.0.0.1:80")

这样,通过requests.utils.add_dict_to_cookiejar对session对象设置cookie,之后所有的请求都会自动加上我自定义的cookie内容。

也可以通过requests.utils.cookiejar_from_dict 先生成一个cookiejar对象,时候在赋值给session.cookies。貌似还可以使用session.cookies.set()或者update()。# session()中方法和requests()中一样

# session.get()  session.post()

session = requests.session()

# 使用session发送post请求获取cookie保存到本地session中。

# 以人人网登录为例。

post_url = "http://www.renren.com/PLogin.do"

headers = {"User-Agent": "Mozilla/5.0"}

session = requests.session()

post_data = {"email": "username", "password": "password"}

session.post(post_url, headers=headers, data=post_data)

# 使用session请求登录后的页面

# 得到登录后的网页内容

url = "http://www.renren.com/xxxxx/profile"

response = session.get(url, headers=headers)

单独处理cookie字段,处理为字典格式# 处理cookie内容为字典

cookie = "SINAGLOBAL=821034395211.0111.1522571861723; wb_cmtLike_1850586643=1; un=tyz950829@sina.com; wb_timefeed_1850586643=1; UOR=,,login.sina.com.cn; wvr=6; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWsNeq71O_sXkkXNnXFHgOW5JpX5KMhUgL.Fo2RSK5f1hqcShe2dJLoI0qLxK-L12qLB-zLxKqL1hnL1K2LxK-LBo5L12qLxKqL1hML1KzLxKnL1K.LB-zLxK-L1K-LBKqt; YF-V5-G0=c99031715427fe982b79bf287ae448f6; ALF=1556795806; SSOLoginState=1525259808; SCF=AqTMLFzIuDI5ZEtJyAEXb31pv1hhUdGUCp2GoKYvOW0LQTInAItM-ENbxHRAnnRUIq_MR9afV8hMc7c-yVn2jI0.; SUB=_2A2537e5wDeRhGedG7lIU-CjKzz-IHXVUm1i4rDV8PUNbmtBeLVrskW9NUT1fPIUQGDKLrepaNzTEZxZHOstjoLOu; SUHB=0IIUWsCH8go6vb; _s_tentry=-; Apache=921830614666.5322.1525261512883; ULV=1525261512916:139:10:27:921830614666.5322.1525261512883:1525239937212; YF-Page-G0=b5853766541bcc934acef7f6116c26d1"

cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in cookie.split("; ")}

python requests的作用_requests session的作用相关推荐

  1. python requests请求终止_Requests 如何中断请求?

    python中的requests如何中断请求呢? 我是多线程并发去get,但是没找到停止请求操作,只能wait线程结束,我以前用过socket套接字,里面写个状态停止read那种就可以. reques ...

  2. python requests 状态码_requests获取所有状态码

    requests获取所有状态码 requests默认是不会获取301/302的状态码的.可以设置allow_redirects=False,这样就可以获取所有的状态码了 import requests ...

  3. python requests 状态码_requests 状态码

    # 信息性状态码 100: ('continue',), 101: ('switching_protocols',), 102: ('processing',), 103: ('checkpoint' ...

  4. python requests session刷新_Python Requests Session set-cookie不生效的坑

    我们知道 Python Requests库 中的 Session 模块有连接池和会话管理的功能,比如请求一个登录接口后,会自动处理 response 中的 set-cookie,下次再请求时会自动把 ...

  5. python中三个双引号 的作用是什么?1、多行注释 2、定义多行字符串(代替转义字符换行符 \n)

    作用1:多行注释 # 这是单行注释""" 这是多行注释第一行 这是多行注释第二行 这是多行注释第三行 """ 作用2:定义多行字符串(无需转 ...

  6. Cookie和Session的作用,区别和各自的应用范围,Session工作原理

    Cookie和Session的作用与区别 Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请 ...

  7. Cookie和Session的作用和工作原理

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  8. 图解Python多修饰器时哪个先起作用

    修饰器本质上是一个函数,它接收一个函数作为参数并返回一个修饰过的新函数,一般来说不会改变函数的功能,只是在外围增加一些辅助性的检查或小功能. 在拙作<Python程序设计开发宝典>中有下面 ...

  9. python冒号用法-python 列表中[ ]中冒号‘:’的作用

    中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = ["physics", "chemistry", 1997, 2000] l ...

最新文章

  1. Idea-每次修改JS文件都需要重启Idea才能生效解决方法
  2. python 运算符 (算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级)(与或非)(异或)
  3. 洛谷P2502:[HAOI2006]旅行
  4. python课本第二章答案_《Python自然语言处理》答案第一、二章
  5. xbox360链接pc_如何将实时电视从Xbox One流式传输到Windows PC,iPhone或Android Phone
  6. background复合属性顺序_CSS有哪些好用的字体属性?
  7. kafka consumer配置拉取速度慢_Kafka消费者的使用和原理
  8. H.264 中的相关问题
  9. c语言 -1%4,**************
  10. param参数服务器
  11. 利用vs10和opencv识别图片类型身份证的号码
  12. 【word小技巧】将visio图插入到word中
  13. linux kill全部进程,linux进程管理及kill命令详解
  14. 115网盘视频播放速度调节
  15. 2013年台式计算机型号,2013cpu天梯图,台式机处理器天梯图
  16. scala特征加工中的报错记录和调试
  17. c51语言主函数,51单片机的基本c51语言程序介绍
  18. 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径
  19. 如何在PCB中放置禁止触摸标志
  20. Jsd2205面试题

热门文章

  1. dlib.get_frontal_face_detector() AttributeError: module ‘dlib’ has no attribute ‘get_frontal_face_de
  2. asp.net response.write输出html,ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response]...
  3. 趣小面,陆正耀的另一副底牌
  4. chrom提示某个网站或应用发生了数据泄露导致您的密码外泄, 要怎么操作? chrom是怎么检测你使用的密码被泄露?
  5. 基于IPSAN的存储典型备份方案
  6. AD20原理图设计与PCB封装画板--学习笔记
  7. linux中---socket---(包含:create,bind, rx-pkt,tx-pkt, ioctl, ) 代码说明讲解
  8. 《皮肤的秘密》 读书笔记
  9. outbox计算机术语,《计算机英语常用词汇》4066(0)
  10. 最牛逼的Java编辑器,没有之一!