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通过解析网页实现看报程序的方法
Aug 04 Python
Python Tkinter基础控件用法
Sep 03 Python
详解Python中的循环语句的用法
Apr 09 Python
在Python中测试访问同一数据的竞争条件的方法
Apr 23 Python
python if not in 多条件判断代码
Sep 21 Python
python之Character string(实例讲解)
Sep 25 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
python爬虫获取新浪新闻教学
Dec 23 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
Python编码爬坑指南(必看)
2016/06/10 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
详细分析python3的reduce函数
2017/12/05 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
django 多数据库及分库实现方式
2020/04/01 Python
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
运动会通讯稿100字
2014/01/31 职场文书
土地转让协议书
2014/04/15 职场文书
预备党员转正考核材料
2014/06/03 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
单位在职证明书
2014/09/11 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
《叶问2》观后感
2015/06/15 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis