Cookie使用

本文介绍了如何使用Python的cookielib模块与urllib2模块配合,实现Cookie的获取、保存及再次利用。通过实例演示了如何创建CookieJar对象来保存Cookie,并将其用于后续的网络请求。

为什么要使用Cookie呢?
Cookie,指某些网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据(经过加密)。

Opener

当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。

如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。

Cookielib

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。 Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录 功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

获取Cookie保存到变量

利用CookieJar对象实现获取cookie的功能,存储到变量中

import urllib2
import cookielib 
#声明一个CookieJar对象实例来保存cookie
cookie=cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也可以传入request
response=opener.open('http://www.baidu.com')
for item in cookie:
   print 'Name = '+item.name
   print 'Value = '+item.value

输出结果:

Name = BAIDUID
Value = C03FAF27E2D5FE0DD4A3DEC7725A6A6D:FG=1
Name = BIDUPSID
Value = C03FAF27E2D5FE0DD4A3DEC7725A6A6D
Name = H_PS_PSSID
Value = 22809_1456_21110_22158
Name = PSTM
Value = 1494224680
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 0

保存Cookie到文件

如果想将cookie保存到文件中就用到FileCookieJar这个对象了,在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存。

import urllib2
import cookielib
#设置保存cookie的文件,同级目录下的cookie.txt
filename='cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie=cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener=urllib2.build_opener(handler)
#创建一个请求,原理同urllib2的urlopen
response=opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True,ignore_expires=True);

运行之后,cookies将被保存到cookie.txt文件中,跟python文件同级目录。

从文件中获取Cookie并访问

从cookie中读取信息,访问其他网站信息。

import urllib2
import cookielib

#创建MozillaCookieJar实例对象
cookie=cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)
#创建请求的request
req=urllib2.Request('http://www.baidu.com')
#利用urllib2的build_opener方法创建一个opener
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response=opener.open(req)
print response.read()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值