您的位置:首页 > 职场人生

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

2020-07-14 06:07 387 查看

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

.

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
按键查看网页缓存,选择顶部的
Network
xhr

注:目前主要的视频分割技术以.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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: