怎么下载m3u8格式视频?Python爬取A站m3u8格式视频案例讲解
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
本篇文章流程
一. 数据来源分析
确定需求 (确定要爬的内容是什么?)。只有知道数据要的是什么,才能根据实际情况去分析 它的来源
怎么去分析 (开发者工具[浏览器都自带 鼠标右键点击插件或者F12]) 抓包分析
所有的ts文件内容 来自 m3u8
有不懂的问题、报错解答,想要源码、视频教程,数据集的同学也可以点这里
二. 代码实现步骤
- 发送请求 对于视频的详情页url地址发送请求
- 获取数据 获取视频的详情页网页源代码
- 解析数据 提取 m3u8的 url地址 标题
- 发送请求 对于m3u8的 url地址 发送请求
- 获取数据 获取所有ts url地址(不是完整是需要拼接)
- 发送请求 对于 ts url地址 发送请求
- 保存数据 保存ts 视频片段 一个一个视频片段
- 合成视频 一个整体视频内容
代码
导入所需的模块
import requests # 数据请求模块 pip install requests
import re # 正则表达式 内置模块 不需要安装
import os # 文件操作
import zipfile # 做压缩文件
用python代码,对于服务器发送请求,服务器接收到请求之后(确定不是爬虫代码,你是正常客户端),才会给你返回数据
url = f'https://www.acfun.cn/v/ac23857874headers = {'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response)
运行代码,返回值为200
解析数据 提取m3u8 url地址 标题
元字符 * +
.*? 通配符 可以匹配任意字符(除了\n) 匹配文字 匹配数字 字母 特殊字符 re.S
\ 转义字符 把含有特殊含义的字符转成除了字符本身以外 没有其他意思
[0] 正则表达式提取出来的内容 返回是列表 [0] 0 是指列表索引位置 索引位置是0 是列表里面的第一个元素
[0,1,2,3,4,5] img\ 我转义我自己
() 表示精确匹配 ? 非贪婪匹配
title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
m3u8_url = re.findall('"backupUrl(.*?)\"]', response.text)[0].replace('\"', '').split('\')[2]
m3u8_data = requests.get(url=m3u8_url, headers=headers).text
print(m3u8_url)
正则解析
正则表达式替换 re.sub() join 是把列表转成字符串
\d 匹配数字 \d+匹配多个数字 * 匹配前一个字符0个或者多个无数个
m3u8_data = re.sub('#EXTM3U', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-VERSION:\d', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-TARGETDURATION:\d', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-MEDIA-SEQUENCE:\d', '', m3u8_data)
m3u8_data = re.sub('#EXTINF:\d\.\d+,', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-ENDLIST', '', m3u8_data)
m3u8_data = m3u8_data.split()for link in m3u8_data:# 字符串拼接 加上 才是完整url地址 构建完整的url地址link_url = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/' + link
保存文件 你确定文件保存路径 保存文件的名字 后缀
link_content = requests.get(url=link_url, headers=headers).content
link_name = link.split('.')[1]
with open(filename + link_name + '.ts', mode='w') as f:f.write(link_content)
合并视频
files = os.listdir(filename)
print('开始视频片段合成..................')with zipfile.ZipFile(filename + title + '.mp4', mode='w') as z:for file in tqdm(files):path_file = filename + filez.write(path_file)os.remove(path_file)print('视频片段合成完毕..................')
怎么下载m3u8格式视频?Python爬取A站m3u8格式视频案例讲解相关推荐
- Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!
[CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...
- Python爬取B站5000条视频,揭秘为何千万人为它流泪
作者 | Yura编辑 | 胡巍巍来源 | CSDN(ID:CSDNnews) 导语:我们特邀作者Yura爬取B站5000条视频,为你揭秘电影<哪吒>的更多"优秀梗", ...
- Python爬取B站5000条视频,揭秘为何千万人看「哪吒」流泪
导读:<哪吒>看哭了无数人!有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下来. 人们喜欢<哪吒& ...
- 用Python爬取B站、腾讯视频、芒果TV和爱奇艺视频弹幕
众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...
- python 软件开发 哔哩哔哩_介绍Python爬取哔哩哔哩视频
栏目介绍如何爬取视频 相关免费学习推荐: 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...
- python 爬取B站原视频的实站代码
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:python学习教程 ( 想要学习Python?Pyt ...
- 如何用python爬取视频_介绍Python爬取哔哩哔哩视频
python视频教程栏目介绍如何爬取视频 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...
- python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...
- python爬取bilibili弹幕_用Python爬取B站视频弹幕
原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...
最新文章
- Kubernetes Service 对象的使用
- [Java入门笔记] Java语言基础(四):流程控制
- 合成复用原则java实例_第7节 合成复用原则
- SAP Kyma组件一览
- 启动tomcat提示The Network Adapter could not establish the connection
- cygwin swoole_swoole入门--------基础概念
- Swift 全功能的绘图板开发
- ccie 与 java,上海ccie脚踏实地,java常量
- python 在linux下通过top,和dh命令获得cpu,内存,以及硬盘信息
- 知虾:2022 Shopee开店图文指南,手把手教你入驻
- pix2pixHD总结
- 微分方程和线性代数(先理解一阶微分形式不变性)
- 2012年2月有29天
- 【C盘内存不足的解决方法】
- framemaker 换行
- lightning接口_新iPhone或将使用TypeC接口~
- PR放入视频音频后没声音,及提示MME设备内部错误的解决办法
- CIO40: 学习.遇见更优秀的自己
- 从零维到十维空间如何在纸上用手绘出来
- 《微服务设计》 读书笔记