爬虫进阶——视频抓取(视频加密分割案例)中国职业培训在线网

爬虫进阶——视频抓取(视频加密分割案例)中国职业培训在线网

.

1.分析网页视频存储形式以及加密格式

一般我们在进行视频采集视频多为:https:www.baidu.com/1.mp4 指向一个视频文件,然而在大多数网站中,现在主流的视频加密格式多为分割为几百个小片段,伴随不断播放而不断加载新的片段,针对中国职业培训在线视频网的视频举例:

http://www.ataclass.cn/player/index/index?guid=0FD6828C-6B69-4E87-92BA-C9C065EF124B&classId=&freeSee=1&index=9493
.
通过F12按键查看网页缓存,选择顶部的Networkxhr
在这里插入图片描述

注:目前主要的视频分割技术以.m3u8文件记录视频片段总数,后缀名为.m3u8的文件内内包含该视频所有片段的文件名,视频片段文件多为.ts文件,所以我们在当前开发者工具中寻找对应的.m3u8文件

如下所示:
在这里插入图片描述
点击查看该文件内容:
在这里插入图片描述
可以观察到所有的视频片段文件都在这里了,从00001.ts-00240.ts
接下来 我们需要重构这些视频片段的url:https://v.ataclass.cn/a3056df2e9a4466ab3f11b834af9aa95/video/e0fa680558314f968d81483099af6191-4ea8dafff39dd86313e610bfbe5bea35-video-fd-00001.ts
以此类推到00240.ts
在这里插入图片描述
接下来开始构造代码请求该视频的所有片段并合并为一个新的mp4文件:

import requests
import requests
import os
import time


def run(i,html,referer):
#做了一个字符串替换避免出现001或者0011等异常情况:正确——>00001.ts 00011.ts   00111.ts
    if int(i)<=9:
        a ='00'+str(i)
    elif int(i)>=10 and int(i)<=99:
        a = '0'+str(i)
    else:
        a=i
    url = str(html)+str(a)+'.ts'  #重构片段视频文件的url地址
    print("开始下载:"+url)
    headers = {'Referer': str(referer),
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
    r = requests.get(url, headers = headers)
    # print(r.content)
    with open('./mp4/{}'.format(url[-10:]),'wb') as f:
        f.write(r.content)   #下载.ts文件到mp4文件夹下保存

def merge(t,cmd):
#启用cmd命令合并所有ts为一个新的new.mp4
    time.sleep(t)
    res=os.popen(cmd)
    print(res.read())



if __name__ == '__main__':


    html = 'https://v.ataclass.cn/a3056df2e9a4466ab3f11b834af9aa95/video/e0fa680558314f968d81483099af6191-4ea8dafff39dd86313e610bfbe5bea35-video-fd-00'
    num = 241
    referer = 'http://www.ataclass.cn/js/player/pages/play.html?v=1591334951381'    #查看.ts文件下的
    for i in range(int(num)):
        run(i, html, referer)

    #调用合并
    merge(5,"copy /b mp4\\*.ts mp4\\new.mp4")  #合并所有ts文件为一个新的new.mp4
    print('ok!处理完成')

结果如下:
在这里插入图片描述
以上就是当前视频网站分割片段视频采集的实例,如需转载请注明出处!https://blog.csdn.net/dbldwang/article/details/106568733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值