一、效果图

二、进度条代码

__author__ = 'Yang'

import os
import time
from threading import Thread '''下载进度条'''
class Down_progress(object): def __init__(self, total, init_size, dst):
# 文件总大小
self.total = total
# 下载大小
self.init_size = init_size
# 文件保存路径
self.dst = dst def start(self):
def start():
start_time = time.time()
print('[文件大小]:%.2f MB' % ((self.total - self.init_size) / 1024 / 1024)) while self.init_size < self.total:
speed_str = ''
if os.path.exists(self.dst):
# 计算下载率
start = self.init_size
time.sleep(1)
down_speed = (self.init_size - start) / 1024
if down_speed > 1024:
speed_str = '%.2f MB/s' % (down_speed / 1024)
else:
speed_str = '%.2f kb/s' % down_speed
print('\r' + '[下载进度]:[%s]%.2f%%,下载速度:%s' % ('#' * int(self.init_size * 50 / self.total), float(self.init_size / self.total * 100), speed_str), end = '') # 计算下载时间
offset_time = time.time() - start_time
if offset_time > 60:
offset_time = '%.2f 分钟' % (offset_time / 60)
else:
offset_time = '%.2f 秒' % offset_time
print('\n' + '下载完成,耗时:%s' % offset_time) th = Thread(target = start)
th.start() ''' 更新下载大小'''
def update(self, size):
self.init_size += size

三、断点下载例子

import requests, re, os
from threading import Thread
from down_progress import * host = "http://www.8080s.net"
url = "http://www.8080s.net/movie/32088"
headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'} ''' 断点下载'''
def down(url, dst):
try:
response = requests.get(url, stream=True, verify=False)
file_size = int(response.headers['content-length'])
if os.path.exists(dst):
first_size = os.path.getsize(dst)
else:
first_size = 0
if file_size <= first_size:
return
headers['Range'] = "bytes=%d-" % (first_size, )
print("开始下载:"+url)
res = requests.get(url, stream=True, headers=headers, verify=False)
with open(dst, "ab") as f:
dp = Down_progress(file_size, first_size, dst)
dp.start()
chunk_size = 1024
for chunk in res.iter_content(chunk_size = chunk_size):
if chunk:
f.write(chunk)
dp.update(chunk_size)
except Exception as e:
print(e) if __name__ == '__main__':
res = requests.get(url)
content = res.text
a = re.findall(r"<a[^>]*\s+href=[\'\"]?([^\'\"]*)[\'\"]?[^>]*\s+>.*<\/", content)
down(a[0], './%s' % os.path.basename(a[0]))

  

  

python 之实现断点下载与下载进度条的更多相关文章

  1. android AsyncTask异步下载并更新进度条

    AsyncTask异步下载并更新进度条    //如果不是很明白请看上篇文章的异步下载 AsyncTask<String, Integer, String> 第一个参数:String 传入 ...

  2. VC下载文件显示进度条

    VC下载文件显示进度条 逗比汪星人2009-09-18上传   by Koma http://blog.csd.net/wangningyu http://download.csdn.net/deta ...

  3. 【转】C#中使用aria2c进行下载并显示进度条

    [转自] C#中使用aria2c进行下载并显示进度条 - 云平台知识库 - 博客园https://www.cnblogs.com/littlehb/p/5782714.html 正则表达式的生成网站: ...

  4. 利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

  5. VC下载文件 + 显示进度条

    在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: UINT DownloadFile(LPVOID pParam) { CWn ...

  6. idhttp post 上传或下载时显示进度条

    通过 idhttp 带进度条上传演示一下,下载和上传原理差不多,说明一下下面例子中的的idhttp 是动态创建的 第一步:添加一个StatusBar或者gauge 进度条,这2个都可以.我用的是 st ...

  7. webclient下载文件 带进度条

    private void button1_Click(object sender, EventArgs e) { doDownload(textBox1.Text.Trim()); } private ...

  8. Android开发(24)---安卓中实现多线程下载(带进度条和百分比)

    当我们学完java中多线程的下载后,可以将它移植到我们的安卓中来,下面是具体实现源码: DownActivity.java package com.example.downloads; import ...

  9. idhttp post 上传或下载时显示进度条(对接idhttp1.OnWork事件)

    通过 idhttp 带进度条上传演示一下,下载和上传原理差不多,说明一下下面例子中的的idhttp 是动态创建的 第一步:添加一个StatusBar或者gauge 进度条,这2个都可以.我用的是 st ...

  10. C# .net实现下载,带进度条

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

随机推荐

  1. oracle 逻辑对象

    视图 视图的作用: a 让查询返回的字段更容易理解. b 对复杂select语句的封装. c 安全性.视图可以单独授权.对于数据量巨大的表,可以创建视图仅仅返回前100条数据,将该视图select权限 ...

  2. springboot 接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...

  3. Oracle数据库之初识部分知识

    Oracle是比MySql更为严格的数据库.使用时需要更加严谨. 一.安装注意事项: 1.选择地址时需要注意好不能有汉字,以免造成安装的时候注册表显示监听失败: 2.可视化窗口PLSQL编辑器(相当于 ...

  4. Java 之 Session 包含验证码登录案例

    需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码.  如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误  如果验证码输入有误,跳转登录页面, ...

  5. TOEFL词汇笔记英语托福英语

    conjectural-based on guessing 推测的-给予猜测的 consciously-on purpose 有意识地-有目的地 conserve-retain保存-保存 conspi ...

  6. jmeter学习笔记(二十二)——监听器插件之jp@gc系列

    一.jp@gc - Actiive Threads Over Time 不同时间活动用户数量展示 下面是一个阶梯加压测试的图标   二.jp@gc - Transactions per Second ...

  7. vue-cli 移动端项目如何在手机上调试预览

    这里分享下如何在webpack工具构建下的vue项目,在手机端调试和预览,言归正传. 1.电脑和手机连接到同一个WIFI a.台式电脑和手机同时链接一个路由器,使用同一个wifi: b.笔记本也可以直 ...

  8. 【书评:Oracle查询优化改写】第14章 结尾章

    [书评:Oracle查询优化改写]第14章 结尾章 一.1  相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26 ...

  9. 身份证验证PHP类

    PHP根据身份证号,自动获取对应的星座函数,然后自动返回对应的星座,自动返回性别,判断是否成年 <?php class IdcardAction extends Action{ // PHP根据 ...

  10. .NET Framework 项目多环境下配置文件web.config

    解决jenkins自动构建发布的问题,统一从git/svn库中获取项目文件,根据不同配置编译发布到多个运行环境中. 转自:https://www.cnblogs.com/hugogoos/p/6426 ...