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%