【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战

本文介绍了如何使用Python的selenium和requests库,结合视频流媒体知识,解析m3u8链接并下载ts片段,最终合并为mp4视频。内容涵盖流媒体概念、m3u8文件解析和ts视频下载合并的步骤,适合有一定Python爬虫基础的读者学习。
摘要由CSDN通过智能技术生成

        这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致。再加上之前博主有着七、八年的视频制作经验,深知视频素材获取的不易。因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获取视频解析m3u8链接完成视频的下载功能。



流媒体

流媒体的介绍

        流媒体:从远程服务器传输过来的文件流(分段传输,例如:.ts视频)

流媒体的分类

        1.伪流媒体:边下边存,会保存下来,渐进式下载。
        - 特征:能够暂停、看到时间(时长)、快进、后退。
        - 协议:http/https。
        2.实时流媒体:边下边播,不会保存,看不到时间。
        - 协议:HLS(苹果端,流媒体的传输协议)/RTMP协议(Adobe,实时消息传输协议)
        - 框架:ffmpeg(底层由纯C语言编写,用来进行解码的音视频播放器框架)
        - 实时流媒体图示:
在这里插入图片描述

        其中:
        ① ts:高清单独编辑码的视频文件。
        ② m3u8:记录文件的文件,ts的顺序记录在m3u8文件中。
        - 视频合成指令(需要按照顺序命名,多个ts合并成一个ts):

cat *.ts>hecheng.mp4   # mac
copy /b *.ts hecheng.mp4   # windows

分析实战

编码过程

        1.通过selenium的无头模式获取视频名称和m3u8长链接。

from selenium import webdriver

url = 'http://jx.618g.com/?url=https://v.qq.com/x/cover/0pj8vuntnocu797/o0034hawh6r.html'
# 开启无头模式提取视频m3u8路径地址
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options=chrome_options)
videoAnalysis = browser.get(url)
videoName = browser.title   # 获取当前页面title值
print(videoName)
videoSrcAll = browser.find_element_by_id('player').get_attribute('src')
print(videoSrcAll)
browser.close()

在这里插入图片描述

        2.观察输出结果,发现我们所需要的m3u8链接的url应该是获取到的长链接去除http://jx.618g.com/m3u8-dp.php?url=的url,因此,我们只需要保留等于号后面的内容即可。

# 链接分割取出真正的m3u8
videoSrc = str(videoSrcAll).split('=')[1]   # 取出“=”分割的右半部分
print(videoSrc)   # 输出我们所需的url
res = requests.get(vi
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值