我们登录一个网页或者软件的时候,都要输入账号才能进入界面,随后就可以看其中的内容了。Cookie就类似于担任一个审查员的身份。对想要访问人的身份进行大大小小的审核,合格的才能放任通行,之后我们就可以愉快的去获取自己想要的网页内容啦~听起来是不是非常厉害的作用?本篇小编就来教大家Cookie的用法,一起看看吧。
一、获取 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
我们使用以上方法将cookie保存到变量中,然后打印出了cookie中的值,运行结果如下Name = BAIDUID
Value = B07B663B645729F11F659C02AAE65B4C:FG=1
Name = BAIDUPSID
Value = B07B663B645729F11F659C02AAE65B4C
Name = H_PS_PSSID
Value = 12527_11076_1438_10633
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 0
二、保存 Cookie 到文件
在上面的方法中,我们将 cookie 保存到了cookie这个变量中,如果我们想将cookie保存到文件中该怎么做呢?这时,我们就要用到FileCookieJar这个对象了,在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存import cookielib
import urllib2
#设置保存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)
三、从文件中获取 Cookie 并访问
那么我们已经做到把 Cookie 保存到文件中了,如果以后想使用,可以利用下面的方法来读取cookie并访问网站,感受一下import cookielib
import urllib2
#创建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()
拓展:
cookielib 模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。 它们的关系:CookieJar—— 派生 ——>FileCookieJar—— 派生 ——->MozillaCookieJar和LWPCookieJar
以上就是python爬虫Cookie的使用方法以及Cookielib的简介。之前我们有讲过urllib模块,不过跟cookielib息息相关的是urllib2模块,小伙伴们不要记混了哦~更多Python学习推荐:PyThon学习网教学中心。