【python】10行代码下载B站弹幕

弹幕下载

输入B站视频url链接后回车即可下载.xml格式的弹幕

import re
import requests
# 测试样例:https://www.bilibili.com/bangumi/play/ep17617
url = input('请输入B站视频链接: ')
res = requests.get(url)
cid = re.findall(r'"cid":(.*?),', res.text)[-1]
url = f'https://comment.bilibili.com/{cid}.xml'
res = requests.get(url)
with open(f'{cid}.xml', 'wb') as f:
    f.write(res.content)

转换弹幕

xml2ass:http://tiansh.github.io/us-danmaku/bilibili/

弹幕播放

使用PotPlayer播放器播放视频,并将转换后的.ass弹幕文件拖拽到视频中。

在这里插入图片描述

注意事项

实测会员视频的弹幕也能下载:https://www.bilibili.com/bangumi/play/ep341099

温馨提示

B站的精髓就是弹幕,没有弹幕的番剧是没有灵魂滴。

但现在很多B站的番剧都要会员才能观看了,如果我们去第三方的网站比如樱花动漫AGE动漫观看的话又没有弹幕。

这里有一个很好的解决办法:先到AGE动漫中把番剧下载下来,然后再用jjdown这个软件将B站视频弹幕批量下载下来,然后用PotPlayer播放番剧的时候将弹幕拖拽进去,这样就能实现和B站一样看番也有弹幕的效果。

其实我是看jjdown里面有下载弹幕的功能,然后就想着用python来实现一下,于是就有了今天的这篇文章。jjdown里面还支持将xml弹幕直接转换为ass格式。

Python爬取B站视频弹幕通常涉及网络请求、HTML解析和JavaScript内容处理,因为B站弹幕数据通常是动态加载的,需要通过分析AJAX请求获取。以下是一个基本的步骤概述: 1. **安装必要的库**:首先确保已安装`requests`, `BeautifulSoup4`(用于HTML解析)以及`lxml`或`html5lib`作为BeautifulSoup的引擎。 ```bash pip install requests beautifulsoup4 lxml ``` 2. **模拟登录(可选)**:如果你的目标页面需要登录才能访问,可能需要先获取cookie或者使用第三方库如`selenium`控制浏览器进登录。 3. **分析目标页面**:查看网页源代码,找到播放视频的URL,并注意是否存在明显的API请求或者Ajax请求链接。 4. **发送AJAX请求**:使用`requests`库发送GET或POST请求,模拟用户的为。例如,你可以尝试抓取`http://api.bilibili.com/x/v1/dm/list.so?oid=<video_id>`这样的API,这里的`<video_id>`替换实际视频ID。 ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} url = f'http://api.bilibili.com/x/v1/dm/list.so?oid={video_id}' response = requests.get(url, headers=headers) data = response.json() ``` 5. **解析返回数据**:解析JSON数据,其中可能会包含弹幕信息。弹幕数据通常是以时间戳和内容组成的列表形式。 ```python dms = data['data']['danmu'] for dm in dms: timestamp = dm['time'] # 弹幕时间 content = dm['msg'] # 弹幕内容 print(f"{timestamp}: {content}") ``` 6. **处理动态加载**:如果数据不是一次性获取完的,可能需要轮询或者分析JS代码以确定何时触发更多数据的请求。 请注意,B站有反爬策略,频繁或大规模的爬取可能会导致IP被封禁。在实际操作中,请遵守网站的robots.txt规则,并尊重版权。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值