首页 > python学习 > urllib模块中处理cookie信息
2020
03-30

urllib模块中处理cookie信息

在python中使用urllib库处理cookie,一般通过http.cookiejar模块和urllib模块的HTTPCookieProcessor处理器类一起使用

http.cookiejar模块主要作用是提供用于存储cookie到对象

HTTPCookieProcessor处理器的主要作用是处理这些cookie对象,并构建handler对象

http.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浏览器cookie.txt兼容的FileCookieJar实例。

LWPCookieJar(filename,delayload=None,policy=None)从FileCookieJar派生而来,创建与libwww-per标准的et-Cookie3文件格式兼容的FileCookieJar实例。

#使用CookieJar将cookie保存到内存中
from urllib import request
from urllib import parse
from http.cookiejar import CookieJar
from http.cookiejar import MozillaCookieJar

#1、创建一个cookiejar对象
cookiejar=CookieJar()
#2、使用cookiejar对象创建一个HTTPCookieProcessor对象
handler=request.HTTPCookieProcessor(cookiejar)
#3、使用上一步创建到handler对象创建一个opener
opener=request.build_opener(handler)
#4、使用opener发送登录的请求
data={'user':'myusername','pwd':'mypasswords'}
login_url='https://www.qingheluo.com/login'
req=request.Request(login_url,data=parse.urlencode(data).encode('utf-8'))
opener.open(req)
#至此opener已经获取到了登陆所需的cookie

#使用之前创建的opener访问目标页面,opener包含了登录所需要到cookie
req=request.Request(url)
data=opener.open(req)

使用MozillaCookieJar保存和读取cookie

一、保存cookie信息

#1、创建一个cookiejar对象
cookiejar=MozillaCookieJar('d:/cookie.txt')
#或者不指定cookie文件cookiejar=MozillaCookieJar()
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
opener.open('https://www.qingheluo.com/')
cookiejar.save(filename,ignore_discard=False)
    #保存cookie信息到本地
    #如果创建cookiejar对象时指定了cookie文件这里就不需要再次指定
    #否则这里就要指定保存的cookie文件
    #ignore_discard参数表示是否保存已经过期的cookie信息

二、读取cookie信息

#1、创建一个cookiejar对象
cookiejar=MozillaCookieJar('d:/cookie.txt')
#或者不指定cookie文件cookiejar=MozillaCookieJar()
#2、读取cookie文件的信息
cookiejar.load(filename,ignore_discard=False)
    #读取cookie文件信息
    #如果创建cookiejar对象指定了cookie文件这里就不需要再次指定
    #否则就要指定读取的cookie文件
    #ignore_discard参数表示是否读取已经过期的cookie信息
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
opener.open('https://www.qingheluo.com/')
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。