Python采集视频数据,下载流媒体m3u8格式
前言
嗨喽!大家好,这里是魔王~
本次目的:
Python采集网站视频,下载流媒体m3u8格式视频
模块使用:
- requests >>> pip install requests (数据请求 第三方模块)
- re # 正则表达式 去匹配提取数据
- json
开发环境:
- Python 3.8 解释器
- Pycharm 2021.2 版本 建议
win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
爬虫实现流程思路:
一. 数据来源分析
- 确定目标网站 >>> 爬取网址是什么 数据是什么
- 通过开发者工具进行抓包分析
采集视频
- 先看network下面 media(媒体文件包含视频数据或者音频数据) [如果没有数据]
- 通过数据包数据慢慢分析
如果说url里面包含 ts 后缀 >>> 视频片段 >>> m3u8视频格式 (有专门m3u8文件保存所有ts文件内容)
m3u8 就是把一个整体视频, 分割成很多视频小片段 一个片段只有几秒时间…
(可以更好缓存, 你看多少,他就给加载多少, 减少服务器压力)通过上述分析可以知道 只需要获取m3u8文件, 可以获取所有ts视频片段…
二. 代码实现步骤: 发送请求 获取数据 解析数据 保存数据
第一次请求
- 发送请求, 对于视频详情页页面发送请求
- 获取数据, 获取网页源代码
- 解析数据, 提取我们想要数据内容 视频信息
第二次请求:
- 发送请求, 对于m3u8 url地址发送请求
- 获取数据, 获取返回ts文件内容
- 解析数据, 提取所有ts文件
保存数据, 把视频内容保存本地, 把视频片段合成为一个完整视频
开始我们得代码
导入模块
# 导入数据请求模块
import requests # 第三方模块 pip install requests
# 导入正则
import re # 内置模块 不需要安装
# 导入json
import json # 内置模块 不需要安装
# 导入格式化输出模块
import pprint # 内置模块 不需要安装
全部代码
for page in range(8, 17):# 获取一页视频IDurl = '网址'data = {'quickViewId': 'ac-space-video-list','reqID': '1','ajaxpipe': '1','type': 'video','order': 'newest','page': page,'pageSize': '20','t': '1648129818743',}headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'}response_1 = requests.get(url=url, params=data, headers=headers)video_ids = re.findall('ac(\d+)', response_1.text)for video_id in video_ids:"""1. 发送请求, 对于视频详情页页面发送请求 https://www.acfun.cn/v/ac34063499I. 确定请求网址II. 确定请求方式III. 如何实现伪装 如何防止被反爬 user-agent: 用户代理 表示浏览器基本身份信息在开发者工具里面直接复制等号左边都是自定义变量 (见名知意)"""url = f'https://www.acfun.cn/v/ac{video_id}'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'}# 通过requests这个模块里面get请求方式, 对于url地址发送请求, 并且携带上headers请求头, 最后用自定义变量response接收返回数据response = requests.get(url=url, headers=headers) # <Response [200]> 表示对象 200状态码表示请求成功# 2. 获取数据, 获取网页源代码 response.text 获取响应文本数据(字符串数据)# print(response.text)"""3. 解析数据, 提取我们想要数据内容 视频信息正则表达式 可以直接对于字符串数据进行提取解析re.findall() 找到所有, 找数据 >>> 找什么样数据, 从哪里找数据防止有一种情况, 我们想要数据中间, 突然出现一个分号css 根据标签属性内容提取数据xpath 根据标签节点提取数据re 直接提取字符串数据"""html_data = re.findall('window.pageInfo = window.videoInfo = (.*)', response.text)[0].replace(';', '')json_data = json.loads(html_data)# print(json_data)# pprint.pprint(json_data)# json_data 字典数据类型, 就可以根据键值对取值 根据冒号左边的内容(键) 提取冒号右边的内容(值)title = json_data['title'] # 提取视频标题m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]m3u8_data = requests.get(url=m3u8_url, headers=headers).text# print(m3u8_data)m3u8_data = re.sub('#E.*', '', m3u8_data).split() # split() 字符串分割 返回列表数据for ts in m3u8_data:ts_url = '/'.join(m3u8_url.split('/')[:-1]) + '/' + tsprint(ts_url)# ts_url = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/' + ts# ts_url_1 = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts# https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/ts_content = requests.get(url=ts_url, headers=headers).content# ab 以二进制数据追加保存不会覆盖 wb 二进制数据保存 会覆盖with open(title + '.mp4', mode='ab') as f: # asf.write(ts_content)print(title, '视频保存成功', url)
更多资源、解答可点击
【python】采集优质阿婆主全部视频~下载流媒体m3u8格式
尾语
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
Python采集视频数据,下载流媒体m3u8格式相关推荐
- python爬虫—视频爬虫2(m3u8)
python爬虫-视频爬虫2(m3u8) 一.视频爬虫的分析 今天我们爬的视频比上一期的要特殊一些,一些网站使用m3u8来进行视频的播放工作,特意去搜了一下m3u8与mp4相比的一些优势: 1.HTM ...
- android surfaceview 大小_Android 使用Camera2 API采集视频数据
Android 视频数据采集系列的最后一篇出炉了,和前两篇文章想比,这篇文章从系统API层面进行一些探索,涉及到的细节更多.初次接触 Camera2 API 会觉得它的使用有些繁琐,涉及到的类有些多, ...
- win下海康工业相机使用python读取视频并转换成cv格式
硬件设备:海康威视工业相机CA013-A0UC USB3 环境:win10,python3.7,海康MVS 海康工业相机环境配置(MVS) 配置好环境后可以运行一下MVS和MVS\Developmen ...
- V4L2采集视频数据
Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版.V4L2是linux操作系统下用于采集图片.视频和音频数据的API接口,配合适当的视频采集设备和相应的 ...
- 用Python采集财经数据信息并作可视化
嗨嗨,大家好下午好,我是小圆 ~ 今天给大家分享一下,如何用python采集财经数据信息并作可视化 开发环境: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requ ...
- android 音视频流采集,Android 音视频开发(四):使用 Camera API 采集视频数据(示例代码)...
本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...
- python梨视频爬虫下载,反反爬
python梨视频爬虫下载,反反爬 跟着b站视频学习,发现和视频里面讲的不一样 视频URL改成ajax异步请求得到的 拿到视频url之后发现居然是个假链接不是真实的 仔细观察真实的视频url发现,刚才 ...
- python 实现多线程下载加密m3u8格式视频,使用FFmpeg合并
如果你要下载的m3u8文件未加密: 请移步:https://blog.csdn.net/s_kangkang_A/article/details/103071822 上次做完了没加密的,再次记一下加密 ...
- python视频转化_python实现m3u8格式转换为mp4视频格式
开发动机:最近用手机QQ浏览器下载了一些视频,视频越来越多,占用了手机内存,于是想把下载的视频传到电脑上保存,可后来发现这些视频都是m3u8格式的,且这个格式的视频都切成了碎片,存在电脑里不方便查看, ...
- 音视频 HLS协议和m3u8格式分析
什么是HLS HLS协议草案历史:https://datatracker.ietf.org/doc/rfc8216/ 可直接看:https://www.rfc-editor.org/rfc/rfc82 ...
最新文章
- php控制字数方法,php处理字数过多的方法
- python实现矢量分级渲染_OpenLayer3实现分级渲染(初级版本)
- 语音识别现状与工程师必备技能
- 两个ExtJs可视化设计器
- java hibernate的使用_java – 使用hibernate / JPA登录
- 自动控制理论 第一章 思维导图
- 华为NP课程笔记6-路由控制
- vod系统必须要用服务器吗,架设美萍VOD点播系统服务器
- cad2004教程_CAD卸载教程
- 图像取证:源识别和伪造检测(Image Forensics: source identification and tampering detection)
- 听风的插件-集成到设置中
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 风靡IT圈的史诗级漏洞log4j2的产生原理及复现
- 查找网站的IP地址的两种方法
- 【毕业设计】金融大数据分析与可视化 - python 大数据 金融 可视化
- 便签记事内容怎么放到手机桌面上?
- IOS Swift语言开发 tableView的重用以及自cell的自适应高度
- epoll_create1与epoll_create区别
- 培养出最多亿万富翁的美国大学TOP10榜单
- 基于高德地图SDK开发之地图显式