webpy:页面下载的三种实现方式

python:

1、import urllib

urlretrieve() 方法直接将远程数据下载到本地。

>>> help(urllib.urlretrieve)
Help on function urlretrieve in module urllib:

urlretrieve(url, filename=None, reporthook=None, data=None)

    1. 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
    2. 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
    3. 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。
import urllib
def cbk(a, b, c): 
    '''回调函数
    @a: 已经下载的数据块
    @b: 数据块的大小
    @c: 远程文件的大小
    ''' 
    per = 100.0 * a * b / c 
    if per > 100: 
        per = 100 
    print '%.2f%%' % per
 
url = 'http://www.google.com'
local = 'd://google.html'
urllib.urlretrieve(url, local, cbk)

这个例子将 google 的 html 抓取到本地,保存在D:/google.html 文件中,同时显示下载的进度。缺点在于,不能适用于传送较大的文件

2、import urllib2

用write()的方式把文件写存为一个文件,缺点在于,无法修改保存的默认地址,只能够存在linux下的默认路径

urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。他以urlopen函数的形式提供了一个非常简单的接口,这是具有利用不同协议获取URLs的能力,他同样提供了一个比较复杂的接口来处理一般情况,例如:基础验证,cookies,代理和其他。

urllib2支持获取不同格式的URLs(在URL的":"前定义的字串,例如:"ftp"是"ftp:python.ort/"的前缀),它们利用它们相关网络协议(例如FTP,HTTP)

 

     import urllib2

fileurl_tmp
= "http://www.blog.pythonlibrary.org/wp-content/uploads/2012/06/wxDbViewer.zip" filename_tmp = fileurl_tmp.split("/")[-1] filepath_tmp = os.path.join("d:\\",str(filename_tmp)) #urllib.urlretrieve(fileurl_tmp,filepath_tmp) #z = DownloadFile(fileurl_tmp,filepath_tmp) f= urllib2.urlopen(fileurl_tmp) data = f.read() with open("demo2.zip", "wb") as code: code.write(data)

 

 

JS:

直接访问URL的方式,读取文件。

在<a>标签中添加herf="url"

或者在script语句中使用ie自带的控件:window.location.href = "url";

 

posted @ 2016-03-21 15:12  blitheG  阅读(1416)  评论(0编辑  收藏  举报