博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-44: cookielib的使用
阅读量:6711 次
发布时间:2019-06-25

本文共 2370 字,大约阅读时间需要 7 分钟。

hot3.png

本篇参考自 伯乐在线 :

前面讲解了怎么使用浏览器的工具找到cookies,以及怎么直接使用cookies登陆网站等等,我们这一小节来讲解一下cookies的其他操作

python 中对于cookies的操作使用的是cookielib 这个库函数,或者说,模块

查看这个模块的详细信息,还是使用 help

import cookielibhelp (cookielib)

我们可以看到输出如下

105745_VgLU_2429887.png

还可以进入图中显示的网址查看:

这里面有很多的东西我们不必深究,我觉得我们现在只要知道三件事情就可以了

  1. 如何获取 cookies

  2. 如何将 cookies 保存到文件以便以后使用

  3. 如何从文件里面取出cookies 

要完成这三件事情只需要这么模块里面的几个类:CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar

它们之间的关系是这样的:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

  1.  CookieJar :获取cookies并保存到变量中

import urllib2import cookielib#声明一个CookieJar对象实例来保存cookiecookie = cookielib.CookieJar()#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器handler=urllib2.HTTPCookieProcessor(cookie)#通过handler来构建openeropener = urllib2.build_opener(handler)#此处的open方法同urllib2的urlopen方法,也可以传入requestresponse = opener.open('http://www.baidu.com')for item in cookie:    print 'Name = '+item.name    print 'Value = '+item.value

   2. 将cookies保存到文件中

        FileCookieJar(filename)

        创建FileCookieJar实例,检索cookie信息并将信息存储到文件中,filename是文件名

        MozillaCookieJar(filename)

        创建与Mozilla cookies.txt文件兼容的FileCookieJar实例

        LWPCookieJar(filename)

        创建与libwww-perl Set-Cookie3文件兼容的FileCookieJar实例

        至于Mozilla和libwww是什么,这里给了一个链接:

        简单的说就是两种不同的网页存取API

import cookielibimport urllib2 #设置保存cookie的文件,同级目录下的cookie.txtfilename = 'cookie.txt'#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件cookie = cookielib.MozillaCookieJar(filename)#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器handler = urllib2.HTTPCookieProcessor(cookie)#通过handler来构建openeropener = urllib2.build_opener(handler)#创建一个请求,原理同urllib2的urlopenresponse = opener.open("http://www.baidu.com")#保存cookie到文件cookie.save(ignore_discard=True, ignore_expires=True)

关于最后save方法的两个参数在此说明一下:

官方解释如下:

 ignore_discard: save even cookies set to be discarded. ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists

由此可见,ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中 cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True  

 3. 从文件中读取cookies

import cookielibimport urllib2 #创建MozillaCookieJar实例对象cookie = cookielib.MozillaCookieJar()#从文件中读取cookie内容到变量cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)#创建请求的requestreq = urllib2.Request("http://www.baidu.com")#利用urllib2的build_opener方法创建一个openeropener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))response = opener.open(req)print response.read()

转载于:https://my.oschina.net/u/2429887/blog/540152

你可能感兴趣的文章
jquery 判断ul下是否存在li
查看>>
Backtrack5 R3实用新工具分析(上)
查看>>
如何解决在 beamer 中使用 utf8 的中文标签乱码问题
查看>>
NYOJ1238 最小换乘 (dijkstra)
查看>>
【Android】保存Fragment切换状态
查看>>
关于TextView的setText()与Integer之间一个易犯的小错误
查看>>
杭电OJ2004——成绩转换
查看>>
第一阶段冲刺10
查看>>
POJ-1679 The Unique MST---判断最小生成树是否唯一
查看>>
(转)关于Struts 2 拦截器参数丢失问题
查看>>
数据筛选和排序
查看>>
Promise 理解
查看>>
Ueditor在MVC中上传文件和远程图片下载的脚本
查看>>
关于索引
查看>>
让pandoc输出pdf时支持中文
查看>>
利用反射实现页面控件与实体之间的绑定
查看>>
Xamarin-Android_BaseAdapter 简单的复用
查看>>
快速傅里叶变换(FFT)
查看>>
在C#程序中使用ocx的方法
查看>>
C# 递归查找文件夹下所有文件和子文件夹的所有文件
查看>>