爬虫从请求头中获取Cookie并在新的请求中设置Cookie

本文主要用到requests,需要了解一下CookieJar、Cookie对象

session

首先,需要对python3的session有一个了解,这个网上有很多介绍,不在过多赘述,session是一个可以保存请求过程中的Cookie的类,它可以将服务器的Set-Cookie直接设置在session中,在下次使用session进行新的请求时会自动加上服务器返回的Set-Cookie
新建一个session的代码也很简单:

session = requests.sessions.session()

这样,一个session就准备好了,但是此时使用的是requests库中的默认头部,如果想要设置session的头部,可以使用下面的方式直接设置。

session.headers = headers

但是这个session我们有时候需要根据最新的请求修改其Cookie值,有可能会想到Cookie不是在头部吗,我直接修改头部不就好了吗?但是直接使用下面的语句是不会成功的:

session.cookies.clear()
session.headers['Cookie'] = newCookie

只能通过session.cookies.setCookie()session.cookies.set()来实现设置Cookie

设置Cookie

  1. 首先从原来的头部获取到Cookie字符串
  2. 对字符串进行处理,处理成一个dict()
  3. 处理成一个dict()后可以使用上面的两个方法设置Cookie,以下是代码。
# 处理字符串
def getCookie(cookieStr):
	cookieDic = dict()
	b = cookieStr.split(';')
	for item in b:
		i = item.split('=')
		cookieDic[i[0]] = i[1]
	return cookieDic
	
# 设置Cookie 方法1,通过字典去设置
def setSessionCookie1(session, cookieStr):
	myDic = getCookie(cookieStr)
	session.cookies.clear()
	# 直接通过字典去设置
	for k,v in myDic.items():
		session.cookies.set(k,v)

# 设置Cookie 方法2,通过Cookie对象设置Cookie
def setSessionCookie2(session, cookieStr):
	myDic = getCookie(cookieStr)
	myCookie = requests.utils.cookiejar_from_dict(myDic)
	session.cookies.clear()
	for i in myCookie:
		session.cookies.set_cookie(i)

方法2就相当于是新建了很多个Cookie对象,Cookie还有很多其他的属性,比如version,domain,expires等等,python现在遵循的标准为RFC2109

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值