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 time模块
Apr 29 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
浅析Python装饰器以及装饰器模式
May 28 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
Python----数据预处理代码实例
Mar 20 Python
Python中format()格式输出全解
Apr 12 Python
基于Python中random.sample()的替代方案
May 23 Python
python的launcher用法知识点总结
Aug 07 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
关于python爬虫应用urllib库作用分析
Sep 04 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
php curl模拟post请求小实例
2013/11/13 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
nodejs基础应用
2017/02/03 NodeJs
微信小程序页面传值实例分析
2017/04/19 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
Python线程threading模块用法详解
2020/02/26 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
竞选演讲稿范文
2013/12/28 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
关于爱国的标语
2014/06/24 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
项目合作意向书
2015/05/08 职场文书
中秋联欢会主持词
2015/07/04 职场文书
公司费用报销管理制度
2015/08/04 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
vue实现锚点定位功能
2021/06/29 Vue.js