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
如果本文对你有帮助,欢迎打赏本站