python中urllib.urlretrieve()实现进度条显示效果
2019-05-13 11:39
1841 查看
Python urllib的urlretrieve()函数解析
urllib模块提供的urlretrieve()函数。urlretrieve()方法直接将远程数据下载到本地。
urlretrieve(url, filename=None, reporthook=None, data=None)
参数filename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
参数data指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers) 元组,filename 表示保存到本地的路径,header表示服务器的响应头
将baidu的html抓取到本地,保存在’’./baidu.html"文件中,同时显示下载的进度。
import urllib #创建函数 def callbackfunc(blocknum, blocksize, totalsize): '''回调函数 @blocknum: 已经下载的数据块 @blocksize: 数据块的大小 @totalsize: 远程文件的大小 ''' percent = 100.0 * blocknum * blocksize / totalsize if percent > 100: percent = 100 print "%.2f%%"% percent
#使用urllib的urlretrieve方法下载数据并回调函数callbackfunc
url = 'http://www.sina.com.cn' local = 'd:\\sina.html' urllib.urlretrieve(url, local, callbackfunc)
urlopen()可以轻松获取远端html页面信息,然后通过python正则对所需要的数据进行分析,匹配出想要用的数据,再利用urlretrieve()将数据下载到本地。对于访问受限或者对连接数有限制的远程url地址可以采用proxies(代理的方式)连接,如果远程连接数据量过大,单线程下载太慢的话可以采用多线程下载,这个就是传说中的爬虫。
在纯控制台输出的程序中,有时候想要显示程序运行的进度,如果进度更新一次就输出一次,会打印很多行信息,把前面有用的信息覆盖掉了。Linux下面安装文件时出现的文本形式的进度条和百分比只在一行里面刷新,很不错。Python在windows下面也可以实现这种效果。
import sys import time for i in range(10000): percent = 1.0 * i / 10000 * 100 print 'complete percent:' + str(percent) + '%', sys.stdout.write("\r") time.sleep(0.1)
程序输出结果为:
相关文章推荐
- Python实战——用urllib.urlretrieve自动下载推女郎套图
- js实现增加数字显示的环形进度条效果
- jQuery实现页面顶部显示的进度条效果完整实例
- python实现socket上传下载文件-进度条显示
- Python 简单爬虫程序 以及 urllib.urlretrieve()方法 改变文件存放文件位置
- python 下载 保存 图片的urllib.urlretrieve()函数 简单用法
- 纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
- HTML5效果:Canvas 实现圆形进度条并显示数字百分比
- python使用urllib.urlretrieve时出现“IOError:[Errno 2] No such file or directory”解决办法
- Python实现采用进度条实时显示处理进度的方法
- Python urllib.urlretrieves 代码实例
- 关于网页载入,页面顶部显示页面加载线性进度条效果实现。
- Python2.x 利用urllib.quote实现url地址编码解码
- Python实现对比不同字体中的同一字符的显示效果
- Python实现设置终端显示颜色、粗体、下划线等效果
- [python]解决urllib.urlretrieve()下载不完全的问题
- python实现socket上传下载文件-进度条显示
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- Android实现标题上显示隐藏进度条效果
- Python2实现的LED大数字显示效果示例