一篇说明白了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)

原文链接:https://blog.csdn.net/weixin_40970987/article/details/86597656

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论