跳转到主要内容

Bilibili字幕提取全攻略:从手动抓包到AI自动导出的进阶指南

详细讲解如何提取Bilibili(B站)视频字幕,涵盖浏览器F12手动抓包提取JSON、油猴脚本一键导出TXT/SRT,以及使用Python开源工具进行批量下载与Whisper语音识别的方法。

Bilibili字幕提取 B站字幕下载 B站AI字幕导出 B站字幕抓包 bilisub B站字幕转SRT Python爬取B站字幕 zh-CN

引言

在数字化学习和内容创作的时代,Bilibili(B站)不仅是泛娱乐的视频社区,更是许多人获取知识、学习外语和查阅硬核技术教程的宝库。在这个过程中,视频字幕扮演着至关重要的角色。无论是想要将长视频的文案提取出来交给 AI 进行总结,还是需要下载字幕文件用于二次剪辑与外语学习,Bilibili 字幕提取 已经成为了许多用户的刚性需求。

然而,B站官方并没有直接提供“下载字幕”的按钮。字幕数据通常被隐藏在网页的后台请求中,或者直接压制在视频画面里。本文将深度剖析 B 站字幕的存储原理,并为您提供从“零基础免代码”到“Python 批量自动化”的多种字幕提取方案。

B站字幕的分类与技术存储原理

在动手提取之前,我们需要先了解 B 站视频字幕的运作机制。根据来源和渲染方式,B站的字幕主要分为以下几种:

1. 字幕的主要类型

  • UP主手动上传的外挂字幕(CC字幕): 这是质量最高的字幕类型。UP主在发布视频时,上传了专门的字幕文件(通常是 SRT 或 ASS 格式)。这类字幕在播放器中可以自由开启或关闭,并且支持多语言切换。
  • B站官方 AI 生成字幕: 针对没有提供字幕的视频,B站利用语音识别技术自动生成的字幕。虽然准确率较高,但在遇到专业术语或复杂口音时,可能会存在偏差。
  • 硬字幕(内嵌字幕): 字幕在视频剪辑阶段就已经和画面合并,成为了视频图像的一部分。这种字幕无法通过抓包获取文本,只能通过 OCR(光学字符识别)技术进行画面提取。

2. 数据存储与传输格式

对于 CC 字幕和 AI 生成字幕,B站服务器通常以 JSON 格式向客户端下发数据。当我们观看视频时,浏览器会向 B 站的 API 接口发送请求,获取包含时间戳(开始时间、结束时间)和文本内容的 JSON 文件。播放器前端再将这些数据解析并渲染在视频画面之上。

提示:理解了这一原理,我们提取字幕的核心思路就是:拦截或模拟这个 API 请求,获取 JSON 数据,然后将其清洗并转换为常见的字幕格式(如 TXT、SRT)。

零基础方案:如何快速提取 Bilibili 字幕?

如果您不懂编程,只是偶尔需要提取一两个视频的文案,以下两种方法将是您的最佳选择。

方法一:使用浏览器开发者工具(手动抓包)

这是一种完全免费且无需安装任何第三方软件的方法,适用于所有现代浏览器(如 Chrome、Edge)。

  1. 打开目标视频: 在浏览器中打开您需要提取字幕的 B 站视频页面。
  2. 开启开发者工具: 按下键盘上的 F12 键,或者在网页空白处右键选择“检查(Inspect)”。
  3. 切换到 Network 面板: 在弹出的开发者工具窗口中,点击顶部的 Network(网络)标签页。
  4. 刷新页面并过滤请求:F5 刷新网页,让视频重新加载。在 Network 面板的搜索/过滤框中输入 jsonsubtitles
  5. 定位字幕文件: 在过滤出的列表中,寻找类似于 ?oid=xxxx&type=1 这样带有字幕特征的请求记录。点击该请求,查看 Preview(预览)或 Response(响应)面板,如果看到包含大量文本内容的 JSON 树状结构,说明你找到了字幕文件。
  6. 保存数据: 右键点击该请求,选择“在新标签页中打开(Open in new tab)”,然后将页面上的 JSON 源码全选并保存到本地电脑。

方法二:使用油猴脚本(Tampermonkey)一键导出

对于需要频繁提取字幕的用户,手动抓包显得过于繁琐。借助浏览器扩展脚本,我们可以实现一键下载。

您可以在 GreasyFork 脚本库中搜索“B站字幕导出助手”。例如,有一款名为 Bilibili AI Subtitle Exporter 的脚本,安装后会在 B 站视频播放器旁边生成一个悬浮窗。当检测到当前视频存在 CC 字幕或 AI 字幕时,按钮会被点亮。用户只需点击一下,即可将字幕导出为 TXT(纯文本)或 SRT(带时间轴)格式,非常适合直接复制给 ChatGPT 等 AI 工具进行内容总结。

进阶操作:使用 Python 脚本解析与批量下载

对于开发者或需要处理大量视频数据的研究人员,使用 Python 进行自动化提取是最高效的方法。

1. 提取本地 JSON 字幕文件并转换为纯文本

如果您已经通过抓包获取了 B 站的 JSON 字幕文件,可以使用以下 Python 示例代码,将其中冗余的代码剔除,只保留纯文本内容:

import json

# 定义本地 JSON 字幕文件路径
json_path = 'bilibili_subtitle.json'

# 读取并解析 json 文件
with open(json_path, 'r', encoding='utf-8') as file:
    content = json.load(file)
    result_text = ''
    
    # B站字幕的核心内容通常存储在 'body' 数组中
    if 'body' in content:
        for data in content['body']:
            # 拼接每句字幕,并用逗号隔开
            result_text += data['content'] + ','
            
    print("提取成功:\n", result_text)

2. 使用开源项目进行高级提取与语音识别

在 GitHub 上,有许多成熟的开源项目致力于解决 B 站字幕下载问题。例如 lvusyy/biliSub,这是一个功能强大的 Python 命令行工具。它不仅支持从视频 URL 直接批量下载字幕,还具备以下高级特性:

  • 多格式支持: 支持输出 SRT、ASS、VTT、JSON、LRC 等多种常见格式。
  • AI 语音识别兜底: 当工具检测到视频没有官方字幕时,它会自动调用 OpenAI 的 Whisper 模型,对视频的音频流进行本地语音识别,强行生成字幕。
  • 字幕清理与对齐: 自动去除广告占位符,合并相邻的零碎时间轴,提升阅读体验。

各类提取方法对比矩阵

提取方法 适用人群 技术门槛 优缺点分析
开发者工具抓包 偶尔使用的普通用户 优点:无需安装工具;缺点:步骤繁琐,需手动清洗 JSON 数据。
油猴脚本插件 内容创作者、学生 极低 优点:一键导出,支持 TXT/SRT;缺点:依赖浏览器环境,无法批量处理。
Python 脚本/开源工具 开发者、数据分析师 中高 优点:支持批量、多种格式、可结合 AI 语音识别;缺点:需要配置环境。

大规模抓取与反爬虫策略应对

在进行技术研究或商业数据分析时,您可能需要批量获取某个 UP 主的所有视频字幕。此时,您必然会遇到 B 站的反爬虫机制。常见的限制手段包括:

  1. IP 访问频率限制: 短时间内发送大量 API 请求,会导致 IP 被暂时封禁。
  2. User-Agent 检测: 如果请求头中没有合法的浏览器标识,请求会被直接拒绝。
  3. Cookie 鉴权: 许多高清视频或特定字幕数据,要求携带有效的登录凭证(SESSDATA、bili_jct 等)。

进阶应对方案:
在进行批量视频字幕数据采集,或是运营多个 B 站账号进行内容矩阵分析时,平台往往会通过 IP 地址、浏览器指纹(Browser Fingerprinting)等技术手段进行风控限制。为了有效规避由于环境特征高度一致而导致的封禁,建议使用专业的防关联浏览器。在这里,我们优先推荐 AntidetectBrowser。它能够为每个采集任务或账号生成完全独立的硬件指纹和网络环境,配合代理 IP 使用,是企业级数据抓取和多账号矩阵管理的必备利器。

常见问题(FAQ)

B站视频如果没有官方或UP主提供的字幕,还能提取吗?

如果是视频画面自带的硬字幕,无法直接通过网络请求提取,只能使用 OCR(光学字符识别)软件对视频画面进行逐帧扫描提取。如果没有硬字幕也没有外挂字幕,您可以使用类似 biliSub 这样的工具,利用 Whisper 等 AI 语音识别模型,将视频音频直接转换为字幕文本。

提取的 JSON 格式字幕如何转换为常见的 SRT 格式?

JSON 格式通常包含了 "from"(开始时间)、"to"(结束时间)和 "content"(文本)。您可以使用 Python 编写一个简单的脚本,将 JSON 中的时间戳转换为 SRT 格式要求的 HH:MM:SS,mmm 格式,并按序号排列输出。如果不想写代码,直接使用油猴脚本插件导出 SRT 是最便捷的选择。

为什么在 F12 的 Network 面板中搜索不到 json 文件?

可能有几个原因:1. 当前视频确实没有任何外挂字幕或 AI 字幕;2. 页面在打开开发者工具之前就已经加载完毕,您需要保持 F12 面板打开的状态下按 F5 刷新页面,重新捕获网络请求;3. 尝试搜索关键字 subtitle 或检查 Fetch/XHR 类型的请求。

批量下载 B 站字幕时遇到“请求被拒绝”怎么办?

这通常是因为触发了 B 站的 API 频率限制。建议在代码中加入随机的休眠时间(如 `time.sleep(2)`),降低并发数。同时,确保您的请求头(Headers)中包含合法的 User-Agent,并在必要时配置有效的登录 Cookie。

手机端可以提取 B 站视频字幕吗?

手机端操作相对困难,因为缺乏强大的开发者工具。不过,您可以复制视频链接,通过手机浏览器访问一些第三方的 B 站视频解析网站(部分网站提供字幕下载功能),或者使用支持脚本扩展的手机浏览器(如 Kiwi Browser)安装油猴脚本来实现。

总结

提取 Bilibili 字幕并不复杂,关键在于根据自己的需求选择合适的工具。对于小白用户,浏览器开发者工具和油猴脚本足以应对日常的文案提取需求;而对于有批量处理需求的高阶玩家,掌握 Python 脚本、利用开源项目以及合理配置防关联环境(如 AntidetectBrowser),则能极大提升工作效率。希望本文的指南能帮助您更好地挖掘和利用 B 站的海量视频内容。

最后更新: