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中字符串格式化str.format的详细介绍
Feb 17 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python Pillow Image Invert
Jan 22 Python
Python3几个常见问题的处理方法
Feb 26 Python
python树的同构学习笔记
Sep 14 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
pygame实现飞机大战
Mar 11 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
python编写函数注意事项总结
Mar 29 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控制网页过期时间的代码
2008/09/28 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解如何用babel转换es6的class语法
2018/04/03 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
举例讲解Python中is和id的用法
2015/04/03 Python
详解Django中的过滤器
2015/07/16 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
高中数学教师求职信
2013/10/30 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python3 如何开启自带http服务
2021/05/18 Python