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之眼花缭乱的运算符
Sep 14 Python
Python编写电话薄实现增删改查功能
May 07 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
Python变量类型知识点总结
Feb 18 Python
python创建与遍历List二维列表的方法
Aug 16 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
pandas DataFrame运算的实现
Jun 14 Python
浅析python中的del用法
Sep 02 Python
python合并多个excel文件的示例
Sep 23 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 抽象类的简单应用
2011/09/06 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
python 远程统计文件代码分享
2015/05/14 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
tensorflow常用函数API介绍
2020/04/19 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
ECHT官方网站:男女健身服
2020/02/14 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
自考生自我评价分享
2014/01/18 职场文书
作弊检讨书1000字
2014/02/01 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
期末评语大全
2014/05/04 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
跑出一片天观后感
2015/06/08 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
python中的None与NULL用法说明
2021/05/25 Python
浅谈JS的原型和原型链
2021/06/04 Javascript
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android