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随机生成数模块random使用实例
Apr 13 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python给微信好友定时推送消息的示例
Feb 20 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Python数据可视化图实现过程详解
Jun 12 Python
Django如何实现防止XSS攻击
Oct 13 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 Python
Python中第三方库Faker的使用详解
Apr 02 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
global.php
2006/12/09 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
假日旅行社实习自我鉴定
2013/09/24 职场文书
清明节演讲稿
2014/05/27 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
MySQL 服务和数据库管理
2021/11/11 MySQL
Golang gRPC HTTP协议转换示例
2022/06/16 Golang