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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
python rsa 加密解密
Mar 20 Python
利用nohup来开启python文件的方法
Jan 14 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
python开发入门——set的使用
Sep 03 Python
想学画画?python满足你!
Dec 24 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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产生动态的影像图
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
详解如何较好的使用js
2016/12/16 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
Python中的类学习笔记
2014/09/23 Python
python append、extend与insert的区别
2016/10/13 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
应届毕业生如何写求职信
2014/02/16 职场文书
开业庆典策划方案
2014/02/18 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
财务工作失误检讨书
2015/02/19 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle