摘录自:LOMOOO “爬取网页的ts视频流”
2018-06-18 01:56:02来源:未知 阅读 ()
import requests
import os
from multiprocessing.dummy import Pool
# 在罕见的情况下,你可能想获取来自服务器的原始套接字响应,那么你可以访问 r.raw。 如果你确实想这么干,那请你确保在初始请求中设置了 stream=True。具体你可以这么做:
#
# >>> r = requests.get('https://github.com/timeline.json', stream=True)
# >>> r.raw
# <requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
# >>> r.raw.read(10)
# '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
# 但一般情况下,你应该以下面的模式将文本流保存到文件:
#
# with open(filename, 'wb') as fd:
# for chunk in r.iter_content(chunk_size):
# fd.write(chunk)
# 使用 Response.iter_content 将会处理大量你直接使用 Response.raw 不得不处理的。 当流下载时,上面是优先推荐的获取内容方式。 Note that chunk_size can be freely adjusted to a number that may better fit your use cases.
#chunk_size可以设置你指定的大小,指定每次获取数据的最大值,注意:并不是每次请求回来的content块都是chunk_size指定的大小。
def download(j):
global picpath
url='http://xxx5%s'% str(j).zfill(3)+'.ts'
for l in range(20): #下载失败情况最多20次
try:
retu = requests.get(url, stream=True)
print(str(j).zfill(3)+' 下载完成')
break
except:
print(u'%s文件,正在重试第%d次' % (str(j).zfill(3),l + 1))
picpath = r'C:\Users\bin\PycharmProjects\untitled\%s' % str(j).zfill(3) + '.ts'
file = open(picpath, 'wb')
for chunk in retu.iter_content(chunk_size=1024 * 8):
if chunk:
file.write(chunk)
file.flush()
file.close()
if __name__ == "__main__":
list = [i for i in range(0,2250)] #2250是我爬的视频的长度
pool = Pool(4)
pool.map(download, list)
pool.close()
pool.join()
lst = []
for i in range(0,2250):
test = r'C:\Users\bin\PycharmProjects\untitled\abc\%s.ts' % str(i).zfill(3)
if not os.path.exists(test):
print(str(i).zfill(3)+'.ts')
lst.append(i)
print(lst)
if len(lst):
pool = Pool(4)
pool.map(download, lst)
pool.close()
pool.join()
else:
u'全部下载完成,正在合并'
os.system(r'copy/b C:\Users\bin\PycharmProjects\untitled\*.ts C:\Users\bin\PycharmProjects\untitled\new.ts')
u'合并完成'
# Python中线程multiprocessing模块与进程使用的同一模块。使用方法也基本相同,唯一不同的是,from multiprocessing import Pool这样导入的Pool表示的是进程池;
# from multiprocessing.dummy import Pool这样导入的Pool表示的是线程池。这样就可以实现线程里面的并发了。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Git开发必知必会
下一篇:九九乘法表的运算原理注解
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash