cookiejar包_http.cookiejar库之CookieJar

CookieJar

我们在使用爬虫的时候,经常会用到cookie进行模拟登陆和访问。在使用urllib库做爬虫,我们需要借助http.cookiejar库中的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实例。

其实大多数情况下,我们只用CookieJar(),如果需要和本地文件交互,就用 MozillaCookjar() 或 LWPCookieJar()。

# 经典实例1:

import http.cookiejar,urllib.request

filename = 'cookie.txt'

cookie = http.cookiejar.MozillaCookieJar(filename)

handler = urllib.request.HTTPCookieProcessor(cookie)

opener = urllib.request.build_opener(handler)

response = opener.open('http://www.baidu.com')

cookie.save(ignore_discard=True,ignore_expires=True)

# save()函数带有两个参数,ignore_discard和ignore_expires。

#

# ignore_discard: 即保存需要被丢弃的cookie。

# ignore_expires: 即过期的cookie也保存。

当然,如果我们对cookie有定制的需要,那么我们也要借助HTTPCookieProcess处理器来处理。

# 经典实例2:

import http.cookiejar,urllib.request

cookie = http.cookiejar.MozillaCookieJar("./cookie.txt")

handler = urllib.request.HTTPCookieProcessor(cookie)

opener = urllib.request.build_opener(handler)

res = opener.open("http://www.baidu.com/")

cookie.save(ignore_discard=True, ignore_expire=True)

# 将cookie存为一个文件

# cookie1 = http.cookiejar.MozillaCookieJar()

# cookie1.load('cookie1.txt')

# 从文件中读取cookie

for i in cookie:

print(i.name+"="+i.vaule)

# 经典案例3

import http.cookiejar,urllib.request

cookie = http.cookiejar.LWPCookieJar()

handler = urllib.request.HTTPCookieProcessor(cookie)

opener = urllib.request.build_opener(handler)

response = opener.open('http://www.baidu.com')

print(response.read().decode('utf-8'))

转载至链接:https://my.oschina.net/gain/blog/1931299

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值