为什么80%的码农都做不了架构师?>>>
urllib模块提供一些简单的函数从url中读取数据,但是urllib没有高级定制功能,可以使用urllib2。在urllib中使用最多的是urlopen函数。
urlopen(str_url,data)访问一个给定的url,然后返回一个只读的文件对象t,文件对象t可以使用read、readline、readlines、close等方法。t.geturl()返回t的url。在data为None,并且str_url为http协议时,urlopen发送一个GET请求,在data不是None时,str_url的协议必须是http,urlopen则发送的是POST请求,data的数据必须是URL编码形式,一般可以用urlencode函数处理data数据。
urlencode(query)以query的url编码形式返回一个字符串,query可以是一个由(key/value)数据对组成的序列。这也是urllib用的比较多的函数。
urlretrieve(str_url,filename,data)类似urlopen,但是返回的是一个数据对(f,m),f是一个指定到本地文件系统上的一个文件的路径,m是mimetools模块message类的一个实例。filename为None时,urlretrieve将把提取的数据复制到一个临时的本地文件中,而f是该临时文件的本地路径,如果filename不是None时,将把提取的数据复制到名为filename的文件中。
urlcleanup()清除urlretrieve函数的缓存。
urllib2比urllib功能要丰富,urllib2提供了一个和urllib.urlopen()类似的函数也叫urlopen。要想自定义urllib2,则在调用urlopen函数之前,使用build_opener()和install_opener()函数安装被组合到一个opener的任意数量的处理程序。
handler类,这个类可以用作任何自定义类的超类。
openerdirector类的实例d可以收集handler类的实例,并综合使用这些实例打开各种协议的url。通常可以通过build_opener函数创建实例d,然后调用Install_opener函数安装该实例。
build_opener(handler)创建并返回一个opendirector类的一个实例和给定的参数handler,每个程序都可以是basehandler类的一个子类,可以不带参数进行实例化。
install_opener(opener)安装opener作为进一步调用urlopen的打开程序,opener可以是request类的一个实例
urlopen(str_url,data)行为和urllib.urlopen一致,不过自定义行为是通过opener和handler类实现的。
Request类,可以向urlopen函数传递Request类的一个实例,而不是一个url字符串,这样可以具体的实例化一个url。 Request(str_url,data,hander),str_url是request类这个实例具体化的一个url,在没有data和hander的情况下就和调用urllib2.urlopen(str_url)效果一样。如果data不为None,request将对新实例隐式调用其方法add_data(data)。hander必须是一个从首部名称到首部值的映射。
urllib2.HTTPCOOKIEProcessor(COOKIEjar)一个管理http COOKIE的类。默认情况下使用COOKIElib.COOKIEJar对象。
COOKIElib模块定义了一个可以自动加载http COOKIEs。为存储和管理COOKIE提供了客户端支持。该模块可以提供存储COOKIE的对象,以便urllib包配合使用。
COOKIEJar()管理HTTP COOKIE值,存储HTTP请求生成的COOKIE,向传出的HTTP请求添加COOKIE对象,整个COOKIE都存储在内存中,对COOKIEjar实例进行回收后COOKIE的内容也将被回收。
FileCOOKIEJar(filename)创建fileCOOKIEjar实例,将COOKIE存储到文件中,filename是文件名。