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爬虫之打包生成exe文件
Nov 06 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Django rest framework实现分页的示例
May 24 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python一键安装全部依赖包的方法
Aug 12 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
用Python生成HTML表格的方法示例
Mar 06 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
python进行参数传递的方法
May 12 Python
10个顶级Python实用库推荐
Mar 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
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php自定义时间转换函数示例
2016/12/07 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
onpropertypchange
2006/07/01 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python生成器表达式和列表解析
2016/03/10 Python
详解Python中for循环是如何工作的
2017/06/30 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python单例模式的两种实现方法
2017/08/14 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
保护环境建议书
2014/03/12 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
跳蚤市场口号
2014/06/13 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
2019同学聚会主持词
2019/05/06 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android