• coiokielib模块与urllib2的配合使用

    访问Internet资源
    服务器君一共花费 14.005 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。例如可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送。coiokielib模块用到的对象主要有下面几个:CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。其中他们的关系如下:

    CookieJar()

    The CookieJar class stores HTTP cookies. It extracts cookies from HTTP requests, and returns them in HTTP responses.CookieJar instances automatically expire contained cookies when necessary. Subclasses are also responsible for storing and retrieving cookies from a file or database.

    管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。

    FileCookieJar (filename,delayload=None,policy=None)

    A CookieJar which can load cookies from, and perhaps save cookies to, a file on disk. Cookies are NOT loaded from the named file until either the load() or revert() method is called.

    创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。

    MozillaCookieJar (filename,delayload=None,policy=None)

    A FileCookieJar that can load from and save cookies to disk in the Mozilla  cookies.txt  file format (which is also used by the Lynx and Netscape browsers).Also note that cookies saved while Mozilla is running will get clobbered by Mozilla.

    创建与Mozilla浏览器cookies.txt兼容的FileCookieJar实例。

    LWPCookieJar (filename,delayload=None,policy=None)

    A FileCookieJar that can load from and save cookies to disk in format compatible with the libwww-perl library’s Set-Cookie3file format. This is convenient if you want to store cookies in a human-readable file.

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

    除了上面几个函数之外,下面几个函数也很重要:

    1. FileCookieJar. save ( filename=None ,   ignore_discard=False ,   ignore_expires=False )

    Save cookies to a file.This base class raises NotImplementedError. Subclasses may leave this method unimplemented.filename is the name of file in which to save cookies. If filename is not specified, self.filename is used (whose default is the value passed to the constructor, if any); if self.filename is None, ValueError is raised. ignore_discard: save even cookies set to be discarded. ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists, thus wiping all the cookies it contains. Saved cookies can be restored later using the load() or revert() methods.

    2. FileCookieJar. load ( filename=None ,   ignore_discard=False ,   ignore_expires=False )

    Load cookies from a file.Old cookies are kept unless overwritten by newly loaded ones.Arguments are as for save().The named file must be in the format understood by the class, or LoadError will be raised. Also, IOError may be raised, for example if the file does not exist.

    3. FileCookieJar. revert ( filename=None ,   ignore_discard=False ,   ignore_expires=False )

    Clear all cookies and reload cookies from a saved file. revert() can raise the same exceptions as load(). If there is a failure, the object’s state will not be altered.

    cookielib模块一般与urllib2模块配合使用,主要用在urllib2.build_oper()函数中作为urllib2.HTTPCookieProcessor()的参数。使用方法如下面登录人人网的代码:

    #! /usr/bin/env python
    #coding=utf-8
    import urllib2
    import urllib
    import cookielib
    data={"email":"用户名","password":"密码"}  #登陆用户名和密码
    post_data=urllib.urlencode(data)
    cj=cookielib.CookieJar()
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    headers ={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
    req=urllib2.Request("http://www.renren.com/PLogin.do",post_data,headers)
    content=opener.open(req)
    print content2.read().decode("utf-8").encode("gbk")
    

    再举个简单的例子:

    #获取CookieJar实例
    cj = cookielib.CookieJar()
    #自定义opener,并将opener跟CookieJar实例绑定
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    #安装自定义的opener,此后调用urlopen()时都会使用安装过的opener对象
    urllib2.install_opener(opener)
     
    url = "www.baidu.com"
    urllib2.urlopen(url)
    
    • 这样就可以在第一次打开指定的url时获得所需要cookies,再次使用urlopen()打开url时就会附带这些cookies,CookieJar会智能的帮你管理那些cookies,所以你不需要关心太多的细节。
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [软件工程与项目管理] 浏览器与CSS渲染技巧 2 个条目
  2. [移动开发] 从代码角度去认识HttpClient 2 个条目
  3. [C语言程序设计] C语言里的全局变量 2 个条目
  4. [运维管理] 路由器与交换机 4 个条目
  5. [移动开发] Android与SQLite数据库 7 个条目
  6. [计算机算法] TAOCP与算法 12 个条目
  7. [PHP程序设计] htaccess 设置技巧 6 个条目
  8. [PHP程序设计] PHP数组探索 4 个条目
  9. [Python程序设计] Django Web环境配置 2 个条目
  10. [Python程序设计] Django与表单 4 个条目
  11. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  12. [移动开发] Activity 初步知识 2 个条目
窗口 -- [八点]