Record and Summarize

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。他以urlopen函数的形式提供了一个非常简单的接口,这是具有利用不同协议获取URLs的能力;它同样提供了一个比较复杂的接口来处理一般情况,例如:基础验证,cookies,代理和其他,它们通过handlers和openers的对象提供。

2、urllib2.urlopen(url, data=None, timeout=None)
  参数
    url:打开一个url,可以是字符串(如同urllib.urlopen的url参数),或是一个Request对象(这是special的地方)
    data:向服务器传送的额外数据,仅http请求会用到这个参数。当data不为None时,说明此Http请求是Post,而不是Get。这个参数与urllib2.Request类的构造函数的data参数相同,详见urllib2.Request。一般不会设定这个参数,需要时会在urllib2.Request的构造函数处设置
    timeout:设置超时的时间,类型是整型,单位是秒;如果超过指定时间仍未得到所请求服务器的响应(例如由于网络环境差等原因),则抛出异常,而不会无限制等待。适用于HTTP, HTTPS, FTP, FTPS
  返回值
    返回一个类似于文件描述符号(file-like)的对象,与urllib.urlopen的返回值相同,通过返回值也可以使用geturl()和info()。

3、urllib2.Request类,一般使用方法是使用其构造函数得到一个Request对象:class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
  表示一个URL请求
  参数
    url:一个URL字符串
    data:向服务器传送的额外数据,仅http请求会用到这个参数。当data不为None时,说明此Http请求是Post,而不是Get。其类型应为字符串,一般使用urllib.urlencode()对一个dict或tuple进行处理,得到该字符串。
    headers:请求头,类型是dict。除此之外,请求头可以在创建完Request对象后,通过该对象调用add_header(key, val)添加到对象中。常用方法是添加User-Agent请求头,冒充浏览器请求,用于哄篇服务器,因为一些服务器不允许程序访问。
    后两个参数一般用不到,不再介绍
  返回值
    一个Request对象

4、urllib2.OpenerDirector类
  当你获取一个URL时,你需要使用一个opener(OpenerDirector)。正常情况下我们一直使用默认的opener,被urlopen使用,但你也可以创建自定义的openers。opener使用handler处理任务,所有的重活都交给这些handlers来做。每一个handler知道怎么以特定的url协议打开url,或者怎么处理打开url的某些方面,如,HTTP重定向,或者HTTP cookie。

5、def urllib2.build_opener([handler, ...])
  创建一个OpenerDirector对象,可以包含多个handlers
  参数
    handler, ...:urllib2提供很多handler来处理不同的请求,常用的HTTPHandler,FTPHandler都比较好理解。这里提一下HTTPCookieProcessor,HTTPCookieProcessor是处理cookie的,在很多需要身份验证的请求中cookie是必不可少的,python中对cookie的操作是由cookielib模块来完成的,而这个handler只是调用了其方法,在request和response过程中将cookie加到请求中和把cookie从响应中解析出来。
  返回值
    OpenerDirector对象

6、def urllib2.install_opener(opener)
  install_opener能设置一个全局opener对象,这意味着调用urlopen将会都用你刚安装的opener。
  参数
    opener:OpenerDirector对象

7、urllib2.HTTPCookieProcessor类,通常使用其构造函数得到一个对象,即一个handler:class urllib2.HTTPCookieProcessor([cookiejar])
  参数
    cookiejar:一个cookielib.CookieJar对象,通过构造函数cookielib.CookieJar()得到
  返回值
    HTTPCookieProcessor对象,即一个handler

posted on 2013-12-30 18:45  zhangjing327  阅读(301)  评论(0编辑  收藏  举报