python-44: cookielib的使用

本篇参考自 伯乐在线 :http://python.jobbole.com/81344/
html

前面讲解了怎么使用浏览器的工具找到cookies,以及怎么直接使用cookies登录网站等等,咱们这一小节来说解一下cookies的其余操做python

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

查看这个模块的详细信息,仍是使用 helpcookie

import cookielib
help (cookielib)

咱们能够看到输出以下函数


还能够进入图中显示的网址查看:https://docs.python.org/2/library/cookielib.html工具

这里面有不少的东西咱们没必要深究,我以为咱们如今只要知道三件事情就能够了网站

  1. 如何获取 cookies
    ui

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

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

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

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

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

import urllib2
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来建立cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#经过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也能够传入request
response = 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是什么,这里给了一个连接:http://blog.csdn.net/heiyeshuwu/article/details/1691904

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

import cookielib
import urllib2
 
#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,以后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来建立cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#经过handler来构建opener
opener = urllib2.build_opener(handler)
#建立一个请求,原理同urllib2的urlopen
response = 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 cookielib
import urllib2
 
#建立MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
#建立请求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法建立一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()
相关文章
相关标签/搜索