Python 下载视频 m3u8

该方法为下载网页上的视频
通常情况下,视频网站的视频不是一个整文件,而是成百上千个 ts流 文件

我们获取第一个名为“*****0001.ts”的文件地址,以及最后一个的地址,就可以用 Python 下载

按下 F12 ,选择 Network,就可以找到不断产生的ts文件

找到编号的第一个,右键获取地址,修改代码中的 url 地址,注意最后的 “%04d” 要根据实际情况修改,作用时将整数变为字符类型(前补零)

修改文件下载的地址,我默认是 H:/PyDownload/ 注意,地址一定要是现存的,程序不会自动建立不存在的目录

修改线程数,根据电脑内存的大小进行修改,一般100线程就可以将网速占满

最后,修改个数 range()

建议下载完成后自己进行合并,用的是 cmd 中的 copy 命令

copy /b *.ts new.mp4

import requests
import os
import time
from multiprocessing import Pool

def run(i):
    url = 'https://dapian.video-yongjiu.com/20190917/12948_614ba440/1000k/hls/e6f33517ce300%04d.ts'%i
    print("开始下载:"+url)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"}
    r = requests.get(url, headers = headers,stream=True,timeout=600)
    # print(r.content)
    with open('H:/PyDownload/{}'.format(url[-7:]),'wb') as f:
        f.write(r.content)
        f.close()

def merge(t,cmd):
    time.sleep(t)
    res=os.popen(cmd)
    print(res.read())



if __name__ == '__main__':
    # 创建进程池,执行10个任务
    pool = Pool(32)
    for i in range(500):
        pool.apply_async(run, (i,)) #执行任务
    pool.close()
    pool.join()
    #调用合并
    # merge(5,"copy /b H:\\PyDownload\\*.ts H:\\PyDownload\\new.mp4")
    print('ok!处理完成')
``

你可能感兴趣的:(Python 下载视频 m3u8)