我们在做Python爬虫脚本的时候,往往希望在运行的过程中可以实时查看到我的下载进度!之前我也一直想实现这个功能(绝对不是为了炫(装)耀(*)),也查看了很多博客但是各种解决方案都不是很满意(当然,progressBar和tqdm这两个库都是可选择也可操作的),很多时候我们需要一些定制功能的时候就需要考虑自己实现,这个功能其实很简单,我们可以自己去实现它!
进度条最大的问题是实现输出在一行,且实时变化,不要换行。有的同学可能已经想到了,有2种办法:
一个是来自sys库的sys.stdout.write()函数
可以替代print的一个函数,具体的大家可以自行查找相关资料哦,我们今天用第二种办法:
print本身就有可以实现的办法,比如下面的代码,大家可以运行下!
这段代码会生成一个缓缓前行的‘>’,是不是很简单。重点是' '和end参数, 是跳到行开头,end=''是将原本的print完成后换行改为不换行,这样就实现了这个小功能
那么,进度条完成了,怎么和我们的代码结合,比如我们下载1个10M的东东,怎么控制每1M显示10%呢,这就用到了我们爬虫最常用的一个库requests库的一个功能了
用requests库相关功能实现分段下载
一般情况下我们下载文件使用的是requests.get(url).content的方法来下载文件的二进制
格式,然后在保存即可!这里我们添加一个参数steam=True,在对下载的文件大小进行指
定,比如每次下载1024b,最后获取文件的总大小,即可完成我们的功能实现了!来看下
面的代码:
这个函数就实现了通过文件的url+保存路径和名字2个参数,下载文件,并提供一个简单的进度条以及消耗时间的功能,我们下载个文件,试试效果:
ok~是不是很简单~~大家也可以在里面按自己的喜好添加各种元素哦!
如果有更好的办法,也喜欢在评论区发一下,大家一起讨论下!
前几天有私信我要Python的学习资料,我这里呢整理了一些Python教程和参考资料,从入门到高级的都有,包括学习建议以及学习路线,正在学习Python的同学可以来找我要哦。
首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。
“编程是门手艺活”。什么意思?得练啊。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有