python多进程爬取网站的视频

①首先我们打开网站,按F12打开浏览器开发调试工具,点击Network,可以看到有很多ts文件:
在这里插入图片描述

②我们可以发现,这些ts文件的名字是有规律的,随着视频的播放获取到的ts文件,末尾数字由小到大。直接把视频的进度条拖到最后,查看ts文件末尾数字最大为多大:
在这里插入图片描述

通过观察不难看出,ts文件的名字就只有三位在变,我这里是从1到721,没有数的位会用零来补位。

③点击一个ts文件,把Request URL后的复制下来。
④以下是代码:

import requests
import os
import time
from multiprocessing import Pool

def run(i):
    shu = "%03d"%i #之前我们分析出这个是三位数,没有进位的用零补位
    url = "https://2.mhbobo.com/20190727/QqLJZEwh/800kb/hls/OvNptudd7658" + shu + ".ts" #之前复制的url,把最要改变的位数删掉
    print("开始下载:"+url)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} #让自己伪装成浏览器
    r = requests.get(url, headers = headers)
    name = url[-6:] #设置保存的名字,我用这个文件原本的名字的后6位做名字(这6位中包括了.ts)
    with open(name,'wb') as f: #打开文件以字节写入方式写入
        f.write(r.content)
def main():
    os.chdir('E:\\爬视频') #选择你要保存到的目录
    pool = Pool(10) #multiprocessing库下的一个函数,设置进程池最大进程数量
    for i in range(1,722): #之前我们分析出的数是多少到多少,就把范围设定到那之内
        pool.apply_async(run, (i,)) #非阻塞异步,不用等待子进程执行完毕, 主进程会继续执行,run进入的函数名,i是给这个函数传的参数
    pool.close() #不接受任何新进程
    pool.join() #等待所有进程完成然后退出
if __name__ == '__main__':
    main()

运行程序效果:
在这里插入图片描述

⑤在我设置的文件夹里,找到了相应的ts文件:
在这里插入图片描述
我们打开ts文件可以发现,每个ts文件只有短短几秒,这显然不是我们想要的,
这时我们可以在网上下载一个ts合并软件工具:
在这里插入图片描述
打开软件,在配置里可以设置合并后视频保存路径,点击打开选择ts文件所在的文件夹,ctrl+A选择并打开所有文件,再点击合并(注意此时ts文件不要是被其他播放器打开的状态):
在这里插入图片描述
在这里插入图片描述
大功告成,然后在保存的路径下就可以找到我们想要的视频了:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值