您的位置:首页 > 其它

urllib模块

2016-07-20 11:18 295 查看

urllib模块

urllib模块用于读取来自网上(服务器上)的数据。

例:

import urllib
response = urllib.urlopen('http://www.itdiffer.com')


输出结果如下:

<!DOCTYPE HTML>
<html>
<head>
<title>I am Qiwsir</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
...........//因为内容太多,下面就省略了


urlopen()语法格式

urlopen(url, data = None, proxies = None)

说明:urlopen()主要用于打开url文件,从而获得制定url网页内容,然后就如同操作文件那样来操作,即urlopen()返回的结果是类文件对象,它是可迭代的,通过dir()命令可查询。

url:远程数据的路径,常常是网址。

data:若使用get方式,则获得数据;若使用post方式,这里就是所提交的数据。

proxies:设置代理。

由于urlopen()返回的结果是类文件对象,也是可迭代的,下面列举出比较常用的方法。

read()、readline()、readlines()、fileno()、close():都和文件操作一样,这里不再赘述。

info():返回头信息。

getcode():返回http状态码。

geturl():返回url。

对 url 编码、解码

url对其中的字符有严格要求,不许可某些特殊字符直接使用某些字符,比如url中有空格,会自动将空格进行处理,这个过程需要对url进行编码和解码。在进行 web 开发的时候要特别注意这里

urllib模块提供了url编码和解码功能。

quote( string [ , safe] ):对字符串进行编码。参数safe指定了不需要编码的字符。

urllib.unquote( string ):对字符串进行解码。

quote_plus(string [ , safe] ):与urllib.quote类似,但这个方法用“+”来代替换空格,而 quote 用“%20”来代替空格。

unquote_plus( string ):对字符串进行解码。

urllib.urlencode( query [ , doseq] ):将 dict 或者包含两个元素的元组列表转换成 url 参数。例如 {‘name’ : ‘xiaoxu’ , ‘age’ : ‘23’} 将被转换成 “name = xiaoxu&age = 40”

pathname2url(path):将本地路径转换成 url 路径。

url2pathname(path):将url路径转换成本地路径。

例:

>>>du = 'http://itdiffer.com/name=python book'
>>>urllib.quote(du)
'http%3A//itdiffer.com/name%3Dpython%20book      #此处python与book之间的空格转化为 %20
>>>
>>>
>>>urllib.quote_plus(du)
'http%3A%2F%2Fitdiffer.com%2Fname%3Dpython+book  #此处python与book之间的空格转化为 +


urlretrieve()

urlopen()能够建立类文件对象,但是,不等于将远程文件保存在本地存储器中,urlretrieve()就是满足这个需要的

urlretrieve()语法格式

urllib.urlretrieve( url [ , filename [ , reportbook [ , data ] ] ] )

参数说明:

url:文件所在地址。

filename:可选。将文件保存到本地的文件名,若不指定,urllib会生成一个临时文件来保存。

reportbook:可选。是回调函数,当链接服务器和相应数据传输完毕时触发本函数。

函数执行完毕,返回的结果是一个元组(filename, headers),filename是保存到本地的文件名,headers是服务器响应头信息。

import urllib

def go(a,b,c):
per = 100.0 * a * b / c
if per > 100:
per = 100
print "%.2f%%" % per

url = 'http://pic.mmfile.net/2013/08/131Z525c-2.jpg'
local = r'c:\meinvtupian\g.jpg'
urllib.urlretrieve(url,local,go)


这段程序就是要下载指定的图片,并且保存为本地指定位置的文件,同事要显示下载的进度。上述文件保存之后执行,显示如下效果:
0.00%
11.48%
22.96%
34.44%
45.92%
57.40%
68.88%
80.35%
91.83%
100.00%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  urllib模块