Python之http.cookiejar实现cookie获取与存储

CookieJar是对于Cookie类的一个类似管理类的封装。
类继承图,CookieJar是基类
在这里插入图片描述
CookieJar类有一些子类,分别是FileCookieJar,MozillaCookieJar,LWPCookieJar。
CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。
FileCookieJar (filename,delayload=None,policy=None):从CookieJar派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。
MozillaCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。
LWPCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。

使用

import urllib.request
import http.cookiejar
'''
获取Cookie,并保存到CookieJar()对象中
'''
#====================================
#构建一个CookieJar对象实例来保存cookie
cookiejar = http.cookiejar.CookieJar()
#使用HTTPCookieProcessor()来创建cookie处理器对象,参数为CookieJar()对象
handler = urllib.request.HTTPCookieProcessor(cookiejar)
#通过build_opener()来构建opener
opener = urllib.request.build_opener(handler)
#以get方法访问页面,访问之后会自动保存cookie到cookiejar中
opener.open("http://www.baidu.com")
#可以按照标准格式将保存的Cookie打印出来
cookieStr = ""
for item in cookiejar:
	cookieStr = cookieStr + item.name + "=" +item.value + ";"
#舍去最后一位的分号
print(cookieStr[:-1])
'''
把获得的cookie保存在cookie文件中
'''
#====================================
filename = "cookie.txt"
#声明一个MozillaCookieJar(有save实现)对象实例来保存cookie,之后写入文件
cookiejar = http.cookiejar.MozillaCookieJar(filename)
handler = urllib.request.HTTPCookieProcessor(cookiejar)
opener = urllib.request.build_opener(handler)
response = opener.open("http://www.baidu.com")
#保存cookie到本地文件
cookiejar.save()

'''
从文件中获取cookies,作为请求的一部分去访问
'''
#====================================
#创建MozillaCookieJar(有load实现)实例对象
cookiejar = http.cookiejar.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookiejar.load('cookie.txt')
handler = urllib.request.HTTPCookieProcessor(cookiejar)
opener = urllib.request.build_opener(handler)
response = opener.open("http://www.baidu.com")
print(response)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值