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 相关文章推荐
python检测lvs real server状态
Jan 22 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
python numpy实现文件存取的示例代码
May 26 Python
python实现名片管理器的示例代码
Dec 17 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
jupyter notebook 重装教程
Apr 16 Python
Python爬取网页信息的示例
Sep 24 Python
python boto和boto3操作bucket的示例
Oct 30 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
SSI指令
2006/11/25 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
wxpython绘制音频效果
2019/11/18 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
毕业生自荐书
2013/12/18 职场文书
高中自我鉴定
2013/12/20 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
机关出纳岗位职责
2014/04/03 职场文书
外贸业务员求职信
2014/06/16 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
python如何将mat文件转为png
2022/07/15 Python