python-44: cookielib的使用

2016-07-12 10:27:18来源:oschina作者:217LeeSin人点击

本篇参考自 伯乐在线 :http://python.jobbole.com/81344/


前面讲解了怎么使用浏览器的工具找到cookies,以及怎么直接使用cookies登陆网站等等,我们这一小节来讲解一下cookies的其他操作


python 中对于cookies的操作使用的是cookielib 这个库函数,或者说,模块


查看这个模块的详细信息,还是使用 help


importcookielib
help(cookielib)

我们可以看到输出如下



还可以进入图中显示的网址查看:https://docs.python.org/2/library/cookielib.html


这里面有很多的东西我们不必深究,我觉得我们现在只要知道三件事情就可以了

如何获取 cookies


如何将 cookies 保存到文件以便以后使用


如何从文件里面取出cookies 

要完成这三件事情只需要这么模块里面的几个类:CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar


它们之间的关系是这样的:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

 CookieJar :获取cookies并保存到变量中

importurllib2
importcookielib
#声明一个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')
foritemincookie:
print'Name='+item.name
print'Value='+item.value

2. 将cookies保存到文件中


FileCookieJar(filename)


创建FileCookieJar实例,检索cookie信息并将信息存储到文件中,filename是文件名


MozillaCookieJar(filename)


创建与Mozilla cookies.txt文件兼容的FileCookieJar实例


LWPCookieJar(filename)


创建与libwww-perl Set-Cookie3文件兼容的FileCookieJar实例


至于Mozilla和libwww是什么,这里给了一个链接:http://blog.csdn.net/heiyeshuwu/article/details/1691904


简单的说就是两种不同的网页存取API


importcookielib
importurllib2
#设置保存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)

关于最后save方法的两个参数在此说明一下:官方解释如下:


ignore_discard:saveevencookiessettobediscarded.
ignore_expires:saveevencookiesthathaveexpiredThefileisoverwrittenifitalreadyexists

由此可见,ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中 cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True


3. 从文件中读取cookies


importcookielib
importurllib2
#创建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)
printresponse.read()

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台