Python采集某网站小视频内容, m3u8内容下载

本文介绍了如何使用Python进行网络爬虫,解析m3u8视频链接并下载视频内容。详细讲解了从环境配置、模块安装到PyCharm设置,再到数据来源分析和代码实现步骤,提供了视频讲解和源码教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

大家早好、午好、晚好吖~

环境使用:

  • Python 3.8

  • Pycharm


模块使用:

  • import requests >>> pip install requests

内置模块 你安装好python环境就可以了

  • import re

  • import json


模块安装问题:

如果安装python第三方模块:
  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

安装失败原因:
  • 失败一: pip 不是内部命令

    解决方法: 设置环境变量

  • 失败二: 出现大量报红 (read time out)

    解决方法: 因为是网络链接超时, 需要切换镜像源

    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    阿里云:https://mirrors.aliyun.com/pypi/simple/
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    华中理工大学:https://pypi.hustunique.com/
    山东理工大学:https://pypi.sdutlinux.org/
    豆瓣:https://pypi.douban.com/simple/

    例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

  • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入

    解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好
    或者你pycharm里面python解释器没有设置好


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

  2. 点击齿轮, 选择add

  3. 添加python安装路径


pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

  3. 选择相应的插件点击 install(安装) 即可

  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


👇 👇 👇 源码、教程

资料点击 蓝色字体 自取 ,我都放在这里了。


如何实现虫案例: <思路流程 --> 通用>

一. 数据来源分析

  1. 分析清楚我们想要数据内容, 是在什么地方, 什么样子的

使用开发者工具进行抓包分析: 视频数据以及视频标题

I. F12 或者 右键点击检查选择network 刷新网页

这么多数据包, 我想要视频数据在什么地方?

  • M3U8 视频格式: 把整个完整的视频内容, 分为N个视频片段, 每个片段都是几秒钟 <看多少就加载多少>

所有视频片段 <ts文件> 都包含在 m3u8 的文件链接里面

II. 在开发者工具里面 直接搜索m3u8 可以直接找相对应链接地址

继续分析 这个 m3u8 url地址是从哪里过来 在什么地方有

III. 我们想要视频数据 <m3u8链接> 在 网页源代码里面有

获取整个视频内容 —> 分为N个视频片段<ts文件> —> 在m3u8链接里面 —> 视频播放详情页网页源代码里面

二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于视频播放详情页url发送请求

  2. 获取数据, 获取服务器返回响应数据
    开发者工具里 response

  3. 解析数据, 提取我们想要的数据内容
    - m3u8链接
    - 视频标题

  4. 发送请求, 模拟浏览器对于 m3u8链接 发送请求
    由第三步提取出来链接发送请求

  5. 获取数据, 获取服务器返回响应数据
    开发者工具里 response <对应所有ts文件链接>

  6. 解析数据, 提取我们想要的数据内容
    所有ts文件链接

  7. 保存数据, 把所有视频片段内容保存下来, 并且合成为一个完整视频内容

  8. 多页数据采集

代码展示


👇 👇 👇 源码、教程 领取

资料点击 蓝色字体 自取</

支持下载 m3u8 链接或文件为 mp4 或 ts 格式,并提供丰富的命令行选项。m3u8 downloader 开源的命令行 m3u8/HLS/dash 下载器,支持普通 AES-128-CBC 解密,多线程,自定义请求头等。支持简体中文,繁体中文和英文,完全免费。 开源免费 m3u8 下载工具 m3u8 downloader 中文版开源免费 m3u8 下载工具 m3u8 downloader 中文版 m3u8 downloader 特色: 不支持优酷视频解密 支持AES-128-CBC加密自动解密 支持多线程下载 支持下载限速 支持断点续传 支持Master List 支持直播流录制(BETA) 支持自定义HTTP Headers 支持自动合并 (二进制合并或使用ffmpeg合并) 支持选择下载m3u8中的指定时间段/分片内容 支持下载路径为网络驱动器的情况 支持下载外挂字幕轨道、音频轨道 支持仅合并为音频 自动使用系统代理(可禁止) 提供SimpleG简易的GUI生成常用参数 命令行选项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 N_m3u8DL-CLI.exe [OPTIONS] --workDir Directory 设定程序工作目录 --saveName Filename 设定存储文件名(不包括后缀) --baseUrl BaseUrl 设定Baseurl --headers headers 设定请求头,格式 key:value 使用|分割不同的key&value --maxThreads Thread 设定程序的最大线程数(默认为32) --minThreads Thread 设定程序的最小线程数(默认为16) --retryCount Count 设定程序的重试次数(默认为15) --timeOut Sec 设定程序网络请求的超时时间(单位为秒,默认为10秒) --muxSetJson File 使用外部json文件定义混流选项 --useKeyFile File 使用外部16字节文件定义AES-128解密KEY --useKeyBase64 Base64String 使用Base64字符串定义AES-128解密KEY --useKeyIV HEXString 使用HEX字符串定义AES-128解密IV --downloadRange Range 仅下载视频的一部分分片或长度 --liveRecDur HH:MM:SS 直播录制时,达到此长度自动退出软件 --stopSpeed Number 当速度低于此值时,重试(单位为KB/s) --maxSpeed Number 设置下载速度上限(单位为KB/s) --enableDelAfterDone 开启下载后删除临时文件夹的功能 --enableMuxFastStart 开启混流mp4的FastStart特性 --enableBinaryMerge 开启二进制合并分片 --enableParseOnly 开启仅解析模式(程序只进行到meta.json) --enableAudioOnly 合并时仅封装音频轨道 --disableDateInfo 关闭混流中的日期写入 --noMerge 禁用自动合并 --noProxy 不自动使用系统代理 --disableIntegrityCheck 不检测分片数量是否完整 m3u8 downloader 是一款由 .Net 开发的一个简单易用的 m3u8 下载器,现在很多视频网站的视频都分割成了小片段,其 m3u8 就是来记录这一堆地址的文件,使用本下载器可以快速的下载并合并成一个完整的视频文件。
### HTTP Live Streaming (HLS) 数据流实现与原理 #### 1. HLS 的基本概念 HTTP Live Streaming (HLS) 是一种由 Apple 提供的流媒体传输协议,广泛应用于视频直播和点播场景。该协议的核心思想是将多媒体内容分成多个小片段(通常是几秒到几十秒),并将这些片段存储为标准的 TS 文件[^1]。 #### 2. 数据流的组成结构 HLS 使用两种主要类型的文件来描述和传递数据: - **M3U8 文件**:这是一个基于 M3U 格式的纯文本文件,包含了指向实际媒体片段(TS 文件)的链接列表以及元数据信息。M3U8 文件充当了一个索引角色,指导客户端如何按顺序加载各个片段[^2]。 - **TS 文件**:即 Transport Stream 文件,是一种常见的容器格式,用于封装音视频编码后的比特流。每个 TS 片段可以独立解码和播放。 #### 3. 工作流程概述 以下是 HLS 协议的工作机制: - **服务器端处理** - 媒体源被采集后上传至业务服务器,在此过程中可能涉及转码、分辨率调整等预处理步骤。 - 接下来,原始流会被切割成固定长度的小片段,并保存为 TS 文件形式;同时生成对应的 M3U8 索引文件以便于定位各片段位置[^4]。 - **客户端请求逻辑** 当用户启动支持 HLS 的播放器时,设备会先下载 M3U8 主清单文件以获取可用资源概览及其 URL 地址集合。随后依据网络状况动态选取合适的质量版本进行逐帧抓取回放[^3]。 #### 4. 技术优势分析 相比其他传统流媒体解决方案而言,HLS 具备如下显著特点: - 利用了普遍存在的 HTTP/HTTPS 连接方式作为载体,因此无需额外部署专用服务器或特殊防火墙设置就能顺利运作; - 支持多速率自适应功能(ABR),允许终端根据实时带宽条件灵活切换不同清晰度级别的画面呈现效果从而优化观看体验; - 对硬件设施依赖程度较低,只要有普通的 Web Server 就足以满足基础需求。 ```python import subprocess def generate_hls(input_file, output_dir): command = [ 'ffmpeg', '-i', input_file, '-codec:copy', f'{output_dir}/out_%03d.ts' ] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() if process.returncode != 0: raise Exception(f"Error generating HLS segments: {stderr.decode()}") ``` 上述脚本展示了利用 FFmpeg 工具执行 HLS 分片的一个简单例子。通过调用外部命令行程序完成从单一输入文件向一系列输出片段转换的任务。 ---
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值