本文主要用到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
- 首先从原来的头部获取到
Cookie字符串 - 对字符串进行处理,处理成一个
dict() - 处理成一个
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。
本文介绍了如何在Python requests库中使用session管理Cookie,包括创建session、设置和修改Cookie的方法,以及处理Cookie字符串和字典的操作技巧。重点讲解了session与Cookie的区别和设置Cookie的两种方式。
1538

被折叠的 条评论
为什么被折叠?



