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

#encoding:utf8import _threadimport timeimport requestsfrom lxml import etreeimport reimport sysfrom 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")
时间: 2024-10-08 13:55:29

request下载进度显示,多线程爬取麦子学院视频的相关文章

多线程爬取百度百科

前言:EVERNOTE里的一篇笔记,我用了三个博客才学完...真的很菜...百度百科和故事网并没有太过不一样,修改下编码,debug下,就可以爬下来了,不过应该是我爬的东西太初级了,而且我爬到3000多条链接时,好像被拒绝了...爬取速度也很慢,估计之后要接触一些优化或者多进程,毕竟python是假的多线程.本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 #! -*- coding:utf-8 -*- 2 import reques

实现多线程爬取数据并保存到mongodb

多线程爬取二手房网页并将数据保存到mongodb的代码: import pymongo import threading import time from lxml import etree import requests from queue import Queue index_url='https://m.lianjia.com/gz/ershoufang/pg{}/' detail_url='https://m.lianjia.com{}' # 设置爬取主页的页数 INDEX_PAGE_

Python爬虫入门教程: All IT eBooks多线程爬取

All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着,是的,就这么放着.......然后慢慢的遗忘掉..... All IT eBooks多线程爬取-爬虫分析 打开网址 http://www.allitebooks.com/ 发现特别清晰的小页面,一看就好爬 在点击一本图书进入,发现下载的小链接也很明显的展示在了我们面前,小激动一把,这么清晰无广告的

python多线程爬取网页

#-*- encoding:utf8 -*- ''' Created on 2018年12月25日 @author: Administrator ''' from multiprocessing.dummy import Pool as pl import csv import requests from lxml import etree def spider(url): header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1

多线程爬取糗事百科热门段子 (改写前天的博客)

利用多线程爬取,除了先前用到的几个模块之外,还需用到threading模块和queue模块: 为每一件事情开启一个线程:构造url_list.发送请求.提取数据.保存数据 __init__方法添加三个实例属性队列分别存放:url.响应内容.处理后的数据 改写原先每一个方法里的代码,需要的东西直接从队列中取出,此时方法都无需多余参数了 每当从一个队列取出数据,记得执行task_done()方法,使计数减一 run()方法里把yaozhixing的事情都开启一个线程,比较慢的事情,比如网络请求,可以

多线程爬取小说时如何保证章节的顺序

前言 爬取小说时,以每一个章节为一个线程进行爬取,如果不加以控制的话,保存的时候各个章节之间的顺序会乱掉. 当然,这里说的是一本小说保存为单个txt文件,如果以每个章节为一个txt文件,自然不会存在这种情况. 不仅仅是小说,一些其他的数据在多线程爬取时也有类似情况,比如: 漫画:漫画其实是由大量图片组成,一般一本漫画会保存为一个pdf文件,在此过程要保证图片的顺序. 视频:现在网络上的视频大部分是由多个ts文件拼合,最后保存为一个mp4文件,要保证ts文件的顺序. 它们都有一个共同的特点,那就是

【Python3 爬虫】U28_多线程爬取斗图啦的表情包

目录 1.需求描述 2.实战代码 2.1 单线程爬取 2.2 多线程版 1.需求描述 爬取斗图啦网站,地址为:https://www.doutula.com/photo/list/[Python3 爬虫]U28_多线程爬取斗图啦的表情包 原文地址:https://www.cnblogs.com/OliverQin/p/12636681.html

Python爬虫实战:爬取腾讯视频的评论

前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 一.前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于

【Python网络爬虫四】多线程爬取多张百度图片的图片

最近看了女神的新剧<逃避虽然可耻但有用> 被大只萝莉萌的一脸一脸的,我们来爬一爬女神的皂片. 百度搜索结果:新恒结衣 1.下载简单页面 通过查看网页的html源码,分析得出,同一张图片共有4种链接: {"thumbURL":"http://img5.imgtn.bdimg.com/it/u=2243348409,3607039200&fm=23&gp=0.jpg", "middleURL":"http://i