标签:sel ogr super requests mobile finish http thread user
#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")标签:sel ogr super requests mobile finish http thread user
原文地址:http://www.cnblogs.com/lianghongrui/p/6857106.html