Python使用Requests下载资源获取实时下载进度

前言

这段时间一直都是比较忙,包括工作上的事情和生活上的事情,已经有一个月没有更新文章了;前段时间收集了很多的Kindle书籍,写爬虫的时候为了方便观察进度,要在控制台打印图书的资源的实时下载进度,今天就来说说如何实现这个小功能。
Python使用Requests下载资源获取实时下载进度

正文

首先,当我们请求Requests请求一个资源路径的时候,这个请求的响应体会被立即下载返回,这样的话我们就不能获取进度了,但是Requests为我们提供了stream流的方式来获取响应体,这样就有利于我们来获取实时的下载进度,例如下载IDEA:

当上面的语句被执行时,只有响应头被下载并返回给了我们,所以我们可以获取我们需要的数据,比如内容长度content-length

然后我们再使用Response.iter_content来控制工作流,来遍历获取资源数据;另外在Python3中在打印内容开头加入\r会使光标回到首行,并不会换行,这样就可以实现进度条的效果,所以最终的代码为:

效果为:

当然,你也可以根据自己的喜爱调整输入的内容,比如模仿Centos的下载进度=>>>>实现这样的效果

后记

人生就是在不断的学习与折腾中成长,殊为一边修习,一边休息。

    A+
所属分类:Python

发表评论

请在下方填写评论信息

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

表情 粗体 斜体 图片 引用 链接 删除线 下划线 插代码 签到

目前评论:1   其中:访客  1   博主  0

  1. avatar 广州网站建设 4  来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市天河区 电信

    每日签到,生活更精彩 ~:2018-08-20 10:26:32