webpy:页面下载的三种实现方式
python:
1、import urllib
urlretrieve() 方法直接将远程数据下载到本地。
>>> help(urllib.urlretrieve)
Help on function urlretrieve in module urllib:
urlretrieve(url, filename=None, reporthook=None, data=None)
- 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
- 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
- 参数 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";