python使用cookielib模块操作cookie的实例教程

cookielib是一个自动处理cookies的模块,如果我们在使用爬虫等技术的时候需要保存cookie,那么cookielib会让你事半功倍!他最常见的搭档模块就是python下的urllib和request。

核心类
1.cookie
该类实现了netscape and rfc 2965 cookies定义的cookie标准,基本可以理解为某一条cookie数据。
部分代码如下,很多属性是不是很眼熟?

self.domain_initial_dot = domain_initial_dot
self.path = path
self.path_specified = path_specified
self.secure = secure
self.expires = expires
self.discard = discard
self.comment = comment
self.comment_url = comment_url
self.rfc2109 = rfc2109

2.cookiepolicy
该类的主要功能是收发cookie,即确保正确的cookie发往对应的域名,反之一样。
3.defaultcookiepolicy
该类实现了cookiepolicy的接口。
4.cookiejar
cookiejar是cookie的集合,可以包含有很多cookie类,是我们的主要操作对象。里面有一系列的方法可以支持更加细致的操作!
5.filecookiejar
该类继承自cookiejar,cookiejar只是在内存中完成自己的生命周期,filecookiejar的子类能够实现数据持久化,定义了save、load、revert三个接口。
6.mozillacookiejar & lwpcookiejar
两个实现类,继承关系如下:

2016712155141137.png (702×330)

实例:登录人人网
在firefox下使用httpfox插件来查到人人网的登录时需要post的地址是http://www.renren.com/ajaxlogin

2016712155529959.png (621×69)

而且查看到需要post的data有email和password
python通过cookielib来处理cookie,以下是简单的代码

>>> import urllib
>>> import urllib2,cookielib
>>> login_page = “http://www.renren.com/ajaxlogin”
>>> cj = cookielib.cookiejar()
>>> opener = urllib2.build_opener(urllib2.httpcookieprocessor(cj))
>>> opener.add_handler = [(‘user-agent’,’mozilla/4.0 (compatible; msie 6.0; windows nt 5.1)’)]
>>> data = urllib.urlencode({“email”:’username’,”password”:’password’})
>>> opener.open(login_page,data)
>
>>> if cj:
… for index,cookie in enumerate(cj):
… print index,’:’,cookie

0 :
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
>>>

可以和firebug或者httpfox中得到的cookie进行对比,值可能不一致,但key基本上是一致的,你每次登录应该都不一致

2016712155304292.jpg (596×374)

我也尝试过使用fidder模拟发送没有cookie的post数据,但是没有得到想要的返回值

2016712155344220.jpg (782×338)

而加上cookie信息以后就可以正常的跳转到自己的主页了

2016712155406504.jpg (924×226)

2016712155618471.jpg (930×355)

好了,基本上了解了python中使用cookie来发送登录信息,现在我们来写一个小脚本来登录自己人人网。

#encoding=utf-8
import urllib2
import urllib
import cookielib
def renrenbrower(url,user,password):
login_page = “http://www.renren.com/ajaxlogin”
try:
cj = cookielib.cookiejar()
opener=urllib2.build_opener(urllib2.httpcookieprocessor(cj))
opener.addheaders = [(‘user-agent’,’mozilla/4.0 (compatible; msie 6.0; windows nt 5.1)’)]
data = urllib.urlencode({“email”:user,”password”:password})
opener.open(login_page,data)
op=opener.open(url)
data= op.read()
return data
except exception,e:
print str(e)
print renrenbrower(“http://www.renren.com/home”,”用户名”,”密码”)

这样就可以将自己首页的信息显示出来了,其实在登录完以后,还可以接着写脚本来获取自己想要的信息,如朋友的新鲜事等,这里就不作过多说明了~

Posted in 未分类

发表评论