urllib模块

来源:互联网 发布:网络热播电视剧排行榜 编辑:程序博客网 时间:2024/06/05 15:40

urllib模块

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

例:

import urllibresponse = 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 urllibdef go(a,b,c):    per = 100.0 * a * b / c    if per > 100:        per = 100    print "%.2f%%" % perurl = '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%
0 0
原创粉丝点击