http.cookiejar类的子类:cookiejar、FileCookieJar、mozillacookiejar、lwpccookiejar

这个是Python原生的库,提供了一些操作cookie的方法。


image.png

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实例。

常用的一般是cookiejar、mozillacookiejar、lwpccookiejar。其中mozillacookiejar和lwpccookiejar都有把cookie保存成文件并读取的方法,也就是与本地进行交互,只不过保存的文件格式有所差别。而cookiejar推荐使用requests.cookies.RequestsCookieJar()


mozillacookiejar

image.png
from http import cookiejar
from urllib import request
import ssl


# 关闭证书验证, 避免urllib SSLError
ssl._create_default_https_context = ssl._create_unverified_context



def get_cookie():
    # 创建cookiejar实例对象
    cookie = cookiejar.CookieJar()
    print(cookie)
    # <CookieJar[]>

    # 创建管理器
    cookie_handler = request.HTTPCookieProcessor(cookie)
    http_handler = request.HTTPHandler()
    https_handler = request.HTTPSHandler()

    # 创建请求求管理器
    opener = request.build_opener(cookie_handler, http_handler, https_handler)

    # 发起请求
    url = "https://www.baidu.com"
    req = request.Request(url)
    response = opener.open(req)

    # 查看请求结果
    print(response.reason)  # OK
    print(cookie)
    '''
    <CookieJar[<Cookie BAIDUID=0CEB700F145B6885CD8E44249866A39D:FG=1 for .baidu.com/>, ……>
    '''



def save_cookie():
    # 创建cookiejar实例对象
    # cookie = cookiejar.LWPCookieJar("cookie.txt")
    cookie = cookiejar.MozillaCookieJar("cookie.txt")
    print(cookie)
    # <MozillaCookieJar[]>

    # 创建管理器
    cookie_handler = request.HTTPCookieProcessor(cookie)
    http_handler = request.HTTPHandler()
    https_handler = request.HTTPSHandler()

    # 创建请求求管理器
    opener = request.build_opener(cookie_handler, http_handler, https_handler)

    url = "https://www.baidu.com"
    req = request.Request(url)

    # 发起请求
    response = opener.open(req)

    # 查看请求结果
    print(response.reason)  # OK
    cookie.save()


def load_cookie():
    # 创建cookiejar实例对象
    # cookie = cookiejar.LWPCookieJar()
    cookie = cookiejar.MozillaCookieJar()
    cookie.load("cookie.txt")
    print(cookie)
    # <MozillaCookieJar[<Cookie BAIDUID=FDE7F7327F5535668B75AE11665F012E:FG=1 for .baidu.com/>, <Cookie PSTM=1599882697 for .baidu.com/>, <Cookie BD_NOT_HTTPS=1 for www.baidu.com/>]>



if __name__ == '__main__':
    # get_cookie()
    save_cookie()
    load_cookie()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容