如何使用Python下载哔哩哔哩(Bilibili)视频字幕

在本文中,我将向大家展示如何使用Python下载哔哩哔哩(Bilibili)视频的字幕。通过这个方法,你可以轻松地获取你喜欢的视频的字幕文件,方便学习和交流。

准备工作

在开始之前,我们需要安装一些必要的库,确保你已经安装了requestsjson库,如果没有安装,可以使用以下命令安装:

pip install requests

下载字幕

下面是一个Python脚本,可以帮助你下载指定哔哩哔哩视频的字幕。你只需要将视频的BV号(BV号是Bilibili视频的唯一标识符)替换到代码中的BVID变量中,运行脚本即可下载字幕文件。

"""下载哔哩哔哩 字幕
"""
import math
import os
import time
import requests
import jsondef download_subtitle_json(bvid: str):"""下载字幕"""sub_dir = f'./{bvid}'if not os.path.isdir(sub_dir):os.mkdir(f'./{bvid}')headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0','Accept': 'application/json, text/plain, */*','Accept-Language': 'en-US,en;q=0.5','Referer': f'https://www.bilibili.com/video/{bvid}/?p=1','Origin': 'https://www.bilibili.com','Connection': 'keep-alive','Cookie': "xxxxxxxx",'Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-site',}resp = requests.get(f'https://www.bilibili.com/video/{bvid}/', headers=headers)text = resp.textaid = text[text.find('"aid"') + 6:]aid = aid[:aid.find(',')]cid_back = requests.get("http://api.bilibili.com/x/player/pagelist?bvid={}".format(bvid), headers=headers)if cid_back.status_code != 200:print('获取 playlist 失败')cid_json = json.loads(cid_back.content)for item in cid_json['data']:cid = item['cid']title = item['part'] + '.json'params = {'aid': aid,'cid': cid,'isGaiaAvoided': 'false','web_location': '1315873','w_rid': '364cdf378b75ef6a0cee77484ce29dbb','wts': int(time.time()),}wbi_resp = requests.get('https://api.bilibili.com/x/player/wbi/v2', params=params, headers=headers)if wbi_resp.status_code != 200:print('获取 字幕链接 失败')subtitle_links = wbi_resp.json()['data']["subtitle"]['subtitles']if subtitle_links:# 默认下载第一个字幕subtitle_url = "https:" + subtitle_links[0]['subtitle_url']subtitle_resp = requests.get(subtitle_url, headers=headers)open(os.path.join(sub_dir, title), 'w', encoding='utf-8').write(subtitle_resp.text)if __name__ == '__main__':BVID = 'BV11T42117FY'download_subtitle_json(BVID)
# 请将视频的BV号替换为你想要下载字幕的视频BV号
BVID = 'BV11T42117FY'
download_subtitle_json(BVID)

运行结果:

 

感谢大家的阅读!如果你有任何问题或建议,欢迎在评论区留言。谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熟悉Redis吗,那Redis的过期键删除策略是什么

对于Redis,我们业务开发一般都只关心Redis键值对的查询、修改操作,可能因为懒或者只想能用就行,呵呵。很少关心键值对存储在什么地方、键值对过期了会怎么样、Redis有没什么策略处理过期的键、Redis处理过期键又有什么作用?但这些…

ListNode.__lt__ = lambda a, b: a.val < b.val进行堆排序的比较

在Python中,如果你想让自定义的数据类型(如链表节点ListNode)能够用于堆排序,并且希望这些节点能够基于某个属性(比如节点的值val)进行排序,你需要为这个数据类型实现比较方法。 在你的例子中&…

PCL 霍夫变换探测三维直线

文章目录 一、简介1.1二维空间1.2三维空间二、实现代码三、实现效果参考文献一、简介 1.1二维空间 “Hough变换”(HT)算法最初作为美国专利所发布,是一种定位任何形状的通用方法,该方法最早被应用于二维图像领域之中,但其仍适用于在二维、三维点集探测各种形状。 基础理论:…

固定资产管理系统参考论文(论文 + 源码)

【免费】固定资产管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282536 固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。 固…

LeetCode例题讲解:快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

李飞往事之wifi恶魔

程序员侠李飞是一名技术高超的年轻程序员,他在城市中打击各种网络犯罪活动,保护市民的网络安全。一天,他接到了一个任务,说是城市中有一个邪恶的wifi恶魔正在肆虐,许多人的个人信息被盗取,银行账户被盗刷&a…

System Verilog通过CORDIC算法迭代16次求sin和cos值

求5~85度的sin和cos值 其它角度和Verilog实现代码类似,查表、移位和加法器 define DIE 16 //迭代次数 define PIE 3.1415926 define MUL 100_000_000 //同比放大 initial begin int die; int x[17]; int y[17]; int z[17…

Isaac Sim 3(学习笔记5.8)

Isaac Sim 利用深度学习获取mask掩码图 参考内容 Kubernetes官网 在 Linux 系统中安装并设置 kubectl | Kubernetes准备开始 kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.30 版本的客户端能与 v1.29、 v1.30 和 v1.31 版本的控制面通信。 用…

NodeMCU ESP8266 操作 SSD1306 OLED显示屏详解(图文并茂)

文章目录 1 模块介绍2 接线介绍3 安装SSD1306驱动库4 源码分析4.1 硬件兼容性4.2 可能存在的问题总结1 模块介绍 我们将在本教程中使用的OLED显示屏是SSD1306型号:单色0.96英寸显示屏,像素为12864,如下图所示。 OLED显示屏不需要背光,这在黑暗环境中会产生非常好的对比度。…

三轴加速度计LIS2DUX12开发(3)----计步器

三轴加速度计LIS2DUX12开发.3--轮询获取加速度数据 计步器硬件准备视频教学样品申请源码下载步数检测说明通信模式管脚定义IIC通信模式速率生成STM32CUBEMXIIC配置INT配置串口配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置传感器的量程启用步数计和嵌…

矩阵:一个用于大型语言模型的贝氏学习模型

在本文中,作者介绍了一个贝氏学习模型来理解大型语言模型(LLM)的行为。他们探讨了基于预测下一个token的LLM优化指标,并开发了一个以此原理为基础的新颖模型。他们的方法涉及构建一个理想的生成文本模型,该模型由具有先…

支持标准Modbus TCP双网口高精度模拟量模块

M330E以太网远程I/O无线数据采集模块是一款工业级、隔离设计、高可靠性、高稳定性和高精度数据采集模块,嵌入式32位高性能微处理器MCU,集成2路工业10/100M自适应以太网模块里面。提供多种I/O,支持标准Modbus TCP,可集成到SCADA、O…

能否直接上手 Qt ?——看完 C++ 课本后怎么做?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!如果你已经阅读了 C 课本,但仍然感到…

一键复制:基于vue实现的tab切换效果

需求&#xff1a;顶部栏有切换功能&#xff0c;内容区域随顶部切换而变化 目录 实现效果实现代码使用示例在线预览 实现效果 如下 实现代码 组件代码 MoTab.vue <template><div class"mo-tab"><divv-for"item in options"class"m…

关系型数据库MySQL开发要点之多表查询2024详解

多表查询 准备测试数据 -- 部门管理 create table tb_dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时…

网络安全公司观察,看F5如何将安全化繁为简

应用无处不在的当下&#xff0c;从传统应用到现代应用再到边缘、多云、多中心的安全防护&#xff0c;安全已成为企业数字化转型中的首要挑战。根据IDC2023年《全球网络安全支出指南》&#xff0c;2022年度中国网络安全支出规模137.6亿美元&#xff0c;增速位列全球第一。有专家…

使用 docker-compose 编排 lnmp(dockerfile) 完成 wordpress

一、使用 docker-compose 编排 lnmp(dockerfile) 完成 wordpress 环境准备 ##修改主机名 hostnamectl set-hostname lyh bash [rootlyh ~]###关闭防火墙及核心防护 systemctl stop firewalld ##关闭核心防护 setenforce 0 ##关闭核心防护##安装Docker-20…

Linux(Ubuntu)安装CGAL(非root)

一、安装boost 下载地址&#xff1a;Boost C Libraries - Browse /boost at SourceForge.net 我安装的是1.77.0的版本 ./bootstrap.sh --prefix/usr/local/boost ./b2 ./b2 install 配置环境变量 vim ~/.bashrcexport BOOST_INCLUDE/usr/local/boost/include export BO…

3.控速,红外传感

1.基础知识 2.小车转速代码 int leftX 11; int rightX 12;void carInit() {// put your setup code here, to run once:pinMode(2, OUTPUT); // 配置2口为输出引脚pinMode(3, OUTPUT); // 配置3口为输出引脚//右轮信号方向初始化pinMode(4, OUTPUT); // 配置4口为输出引脚pi…

JavaEE技术之MySql高级-ShardingSphere5(SpringBoot版本:3.0.5)

文章目录 1 ShardingSphere-JDBC读写分离1.1 创建SpringBoot程序1.1.1、创建项目1.1.2、添加依赖1.1.3、创建实体类1.1.4、创建Mapper1.1.5、配置 Spring Boot1.1.6、配置shardingsphere 1.2 测试1.2.1 读写分离测试1.2.2 负载均衡测试1.2.3 事务测试常见错误 2 ShardingSphere…