博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
urllib.urlretrieve远程下载
阅读量:7037 次
发布时间:2019-06-28

本文共 1637 字,大约阅读时间需要 5 分钟。

下面我们再来看看  模块提供的 urlretrieve() 函数。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 表示服务器的响应头。

下面通过例子来演示一下这个方法的使用,这个例子将 google 的 html 抓取到本地,保存在 D:/google.html 文件中,同时显示下载的进度。

 

1 import urllib 2 def cbk(a, b, c):   3     '''回调函数  4     @a: 已经下载的数据块  5     @b: 数据块的大小  6     @c: 远程文件的大小  7     '''   8     per = 100.0 * a * b / c   9     if per > 100:  10         per = 100  11     print '%.2f%%' % per12   13 url = 'http://www.google.com'14 local = 'd://google.html'15 urllib.urlretrieve(url, local, cbk)

下面是  下载文件实例,可以显示下载进度。

1 #!/usr/bin/python 2 #encoding:utf-8 3 import urllib 4 import os 5 def Schedule(a,b,c): 6     ''''' 7     a:已经下载的数据块 8     b:数据块的大小 9     c:远程文件的大小10    '''11     per = 100.0 * a * b / c12     if per > 100 :13         per = 10014     print '%.2f%%' % per15 url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'16 #local = url.split('/')[-1]17 local = os.path.join('/data/software','Python-2.7.5.tar.bz2')18 urllib.urlretrieve(url,local,Schedule)19 ######output######20 #0.00%21 #0.07%22 #0.13%23 #0.20%24 #....25 #99.94%26 #100.00%

  通过上面的练习可以知道,urlopen() 可以轻松获取远端 html 页面信息,然后通过 python 正则对所需要的数据进行分析,匹配出想要用的数据,在利用urlretrieve() 将数据下载到本地。对于访问受限或者对连接数有限制的远程 url 地址可以采用 proxies(代理的方式)连接,如果远程数据量过大,单线程下载太慢的话可以采用多线程下载,这个就是传说中的爬虫。

转载于:https://www.cnblogs.com/nju2014/p/4472042.html

你可能感兴趣的文章
ELK之权限管理
查看>>
×_7_12_2013 I: Light on or off
查看>>
JIT
查看>>
巧用escalations限制Nagios报警次数 - [Nagios
查看>>
Entity SQL与LINQ TO Entity的本质区别
查看>>
python unittest 深入failfast及实际应用【示例】
查看>>
MSSQL中文排序规则设置
查看>>
30 个有关 Python 的小技巧
查看>>
CDN下nginx获取用户真实IP地址
查看>>
Jsp技术总结
查看>>
Sakai 11.x Build Failure
查看>>
面向对象+模块化设计绘制canvas星空动画
查看>>
Elastic Search学习笔记3——集群配置
查看>>
Unity客户端资源智能管理
查看>>
SVN在Windows下的安装配置步骤
查看>>
网页两侧悬浮广告js代码
查看>>
算法练习:判断一个字符串中的字符是否唯一(只用基本数据结构)
查看>>
淘宝技术的科普贴图文
查看>>
http://itunes.apple.com/lookup?id=获取不到版本
查看>>
理解Javascript的状态容器Redux
查看>>