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


Posted in Python onJuly 12, 2016

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
两个实现类,继承关系如下:

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

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

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

而且查看到需要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)
<addinfourl at 53653216 whose fp = <socket._fileobject object at 0x03307B70>>
>>> if cj:
... for index,cookie in enumerate(cj):
...  print index,':',cookie
...  
0 : <Cookie _de=90D533AE20EB964CA96710977F452897 for .renren.com/>
1 : <Cookie anonymid=hlehtdzg-8359yw for .renren.com/>
2 : <Cookie first_login_flag=1 for .renren.com/>
3 : <Cookie id=224967207 for .renren.com/>
4 : <Cookie loginfrom=null for .renren.com/>
5 : <Cookie p=9beb60859c004bcaf0a32ff2c973473d7 for .renren.com/>
6 : <Cookie societyguester=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/>
7 : <Cookie t=86b6a6006002ab6316f708521ab50bfc7 for .renren.com/>
8 : <Cookie xnsid=fa53da51 for .renren.com/>
9 : <Cookie t=30af9ffe774f4d6f242e92da1ccd6670 for .renren.com/xtalk/>
10 : <Cookie feedType=224967207_hot for .www.renren.com/>
11 : <Cookie JSESSIONID=abc3IP9kEhTExblxcRfeu for www.renren.com/>
>>>

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

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

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

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

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

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

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

好了,基本上了解了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","用户名","密码")

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

Python 相关文章推荐
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
python中OrderedDict的使用方法详解
May 05 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
pywinauto自动化操作记事本
Aug 26 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
详解python tkinter模块安装过程
Jan 06 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
Python网络编程中urllib2模块的用法总结
Jul 12 #Python
Python中内置的日志模块logging用法详解
Jul 12 #Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 #Python
浅析Python的web.py框架中url的设定方法
Jul 11 #Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 #Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 #Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 #Python
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
PHP中PDO的错误处理
2011/09/04 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PDO::errorCode讲解
2019/01/28 PHP
PHP count()函数讲解
2019/02/03 PHP
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
python测试驱动开发实例
2014/10/08 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
员工培训心得体会
2013/12/30 职场文书
幸福中国演讲稿
2014/09/12 职场文书
2014年保管员工作总结
2014/11/18 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
志愿者事迹材料
2014/12/26 职场文书
个人总结与自我评价
2015/02/14 职场文书
农村党员干部承诺书
2015/05/04 职场文书
房屋买卖定金协议书
2016/03/21 职场文书