request下载进度显示,多线程爬取麦子学院视频

Posted 陌溪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了request下载进度显示,多线程爬取麦子学院视频相关的知识,希望对你有一定的参考价值。

#encoding:utf8
import _thread
import time
import requests
from lxml import etree
import re
import sys
from contextlib import closing
# 为线程定义一个函数
class ProgressBar(object):

def __init__(self, title,
count=0.0,
run_status=None,
fin_status=None,
total=100.0,
unit=‘‘, sep=‘/‘,
chunk_size=1.0):
super(ProgressBar, self).__init__()
self.info = "【%s】%s %.2f %s %s %.2f %s"
self.title = title
self.total = total
self.count = count
self.chunk_size = chunk_size
self.status = run_status or ""
self.fin_status = fin_status or " " * len(self.status)
self.unit = unit
self.seq = sep

def __get_info(self):
# 【名称】状态 进度 单位 分割线 总数 单位
_info = self.info % (self.title, self.status,
self.count/self.chunk_size, self.unit, self.seq, self.total/self.chunk_size, self.unit)
return _info

def refresh(self, count=1, status=None):
self.count += count
# if status is not None:
self.status = status or self.status
end_str = "\r"
if self.count >= self.total:
end_str = \n
self.status = status or self.fin_status

print(self.__get_info())
print(end=end_str)
#以上是进度条设置

def print_time(threadName=‘Thread-1‘, delay=‘http://newoss.maiziedu.com/qiniu/1shuozaiqianmiandehua.mp4‘):
da = {‘Referer‘: ‘http://m.maiziedu.com/course/393-4373/‘,
‘User-Agent‘: ‘Mozilla/5.0 (Linux; android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36‘}
with closing(requests.get(delay, stream=True,headers=da)) as response:
chunk_size = 1024 # 单次请求最大值
content_size = int(response.headers[‘content-length‘]) # 内容体总大小
progress = ProgressBar(threadName, total=content_size,
unit="KB", chunk_size=chunk_size, run_status="正在下载", fin_status="下载完成")
with open(‘F:\\10\\bsbs\\mai\\‘+threadName+‘.mp4‘, "wb") as file:
for data in response.iter_content(chunk_size=chunk_size):
file.write(data)

progress.refresh(count=len(data))

print(threadName+‘开始‘)

# yuan = requests.get(delay, headers=da).content
# op = open(‘F:\\10\\bsbs\\mai\\‘+threadName+‘.mp4‘, ‘wb‘)
# op.write(yuan)
# op.close()


# 创建两个线程
# print_time()
try:
_thread.start_new_thread(print_time, ("Thread-1",‘http://newoss.maiziedu.com/qiniu/1shuozaiqianmiandehua.mp4‘))
_thread.start_new_thread(print_time, ("Thread-2",‘http://newoss.maiziedu.com/qiniu/8lei.mp4‘))
except:
print("Error: unable to start thread")


while 1:
pass

print("Main Finished")

以上是关于request下载进度显示,多线程爬取麦子学院视频的主要内容,如果未能解决你的问题,请参考以下文章

麦子学院 — 产品进阶课程

麦子学院学习视频之机器学习:1.1 机器学习介绍

麦子学院 — 产品经理之基础阶段和产品思维

[麦子学院]Vue.js框架教程_vuejs详解_视频教程_附配套资料

用bs4和urllib 爬取视频

多线程下载 显示进度 速度(转)