python requests的作用_requests session的作用
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的作用相关推荐
- python requests请求终止_Requests 如何中断请求?
python中的requests如何中断请求呢? 我是多线程并发去get,但是没找到停止请求操作,只能wait线程结束,我以前用过socket套接字,里面写个状态停止read那种就可以. reques ...
- python requests 状态码_requests获取所有状态码
requests获取所有状态码 requests默认是不会获取301/302的状态码的.可以设置allow_redirects=False,这样就可以获取所有的状态码了 import requests ...
- python requests 状态码_requests 状态码
# 信息性状态码 100: ('continue',), 101: ('switching_protocols',), 102: ('processing',), 103: ('checkpoint' ...
- python requests session刷新_Python Requests Session set-cookie不生效的坑
我们知道 Python Requests库 中的 Session 模块有连接池和会话管理的功能,比如请求一个登录接口后,会自动处理 response 中的 set-cookie,下次再请求时会自动把 ...
- python中三个双引号 的作用是什么?1、多行注释 2、定义多行字符串(代替转义字符换行符 \n)
作用1:多行注释 # 这是单行注释""" 这是多行注释第一行 这是多行注释第二行 这是多行注释第三行 """ 作用2:定义多行字符串(无需转 ...
- Cookie和Session的作用,区别和各自的应用范围,Session工作原理
Cookie和Session的作用与区别 Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请 ...
- Cookie和Session的作用和工作原理
一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...
- 图解Python多修饰器时哪个先起作用
修饰器本质上是一个函数,它接收一个函数作为参数并返回一个修饰过的新函数,一般来说不会改变函数的功能,只是在外围增加一些辅助性的检查或小功能. 在拙作<Python程序设计开发宝典>中有下面 ...
- python冒号用法-python 列表中[ ]中冒号‘:’的作用
中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = ["physics", "chemistry", 1997, 2000] l ...
最新文章
- Idea-每次修改JS文件都需要重启Idea才能生效解决方法
- python 运算符 (算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级)(与或非)(异或)
- 洛谷P2502:[HAOI2006]旅行
- python课本第二章答案_《Python自然语言处理》答案第一、二章
- xbox360链接pc_如何将实时电视从Xbox One流式传输到Windows PC,iPhone或Android Phone
- background复合属性顺序_CSS有哪些好用的字体属性?
- kafka consumer配置拉取速度慢_Kafka消费者的使用和原理
- H.264 中的相关问题
- c语言 -1%4,**************
- param参数服务器
- 利用vs10和opencv识别图片类型身份证的号码
- 【word小技巧】将visio图插入到word中
- linux kill全部进程,linux进程管理及kill命令详解
- 115网盘视频播放速度调节
- 2013年台式计算机型号,2013cpu天梯图,台式机处理器天梯图
- scala特征加工中的报错记录和调试
- c51语言主函数,51单片机的基本c51语言程序介绍
- 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径
- 如何在PCB中放置禁止触摸标志
- Jsd2205面试题
热门文章
- dlib.get_frontal_face_detector() AttributeError: module ‘dlib’ has no attribute ‘get_frontal_face_de
- asp.net response.write输出html,ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response]...
- 趣小面,陆正耀的另一副底牌
- chrom提示某个网站或应用发生了数据泄露导致您的密码外泄, 要怎么操作? chrom是怎么检测你使用的密码被泄露?
- 基于IPSAN的存储典型备份方案
- AD20原理图设计与PCB封装画板--学习笔记
- linux中---socket---(包含:create,bind, rx-pkt,tx-pkt, ioctl, ) 代码说明讲解
- 《皮肤的秘密》 读书笔记
- outbox计算机术语,《计算机英语常用词汇》4066(0)
- 最牛逼的Java编辑器,没有之一!