urllib模块

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%
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值