python3网络爬虫--最新爬取B站视频弹幕 so文件
import requests
import re
import os
def download_video_danmaku(video_id, page=1, output_dir='danmakus'):
"""
下载B站视频弹幕字幕文件(so文件)
:param video_id: B站视频ID
:param page: 弹幕分页
:param output_dir: 输出文件夹
"""
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 弹幕API URL
danmaku_api = f'https://api.bilibili.com/x/v1/dm/list.so?oid={video_id}&type=1&pn={page}&format=json'
# 发送请求获取弹幕数据
response = requests.get(danmaku_api)
if response.status_code == 200:
data = response.json()
if data['code'] == 0:
# 遍历弹幕数据并下载
for item in data['data']['list']:
content = item['content'].replace('<br>', '\n') # 替换HTML换行标签
file_name = f"{video_id}-{item['oid']}-{item['id']}.so"
file_path = os.path.join(output_dir, file_name)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
print(f"下载弹幕文件: {file_name}")
else:
print(f"获取弹幕失败: {data['message']}")
else:
print(f"请求状态码异常: {response.status_code}")
# 使用示例
# 视频ID通常是URL的一部分,例如 https://www.bilibili.com/video/BV1X4411V75C 的ID为 4411V75C
video_id = '4411V75C' # 替换为目标视频ID
download_video_danmaku(video_id, output_dir='bilibili_danmakus')
这段代码定义了一个下载B站视频弹幕字幕文件的函数download_video_danmaku
。函数接收视频ID、页码和输出目录作为参数,并尝试下载弹幕内容到指定的文件夹中,每个弹幕文件都是一个.so
文件。函数使用了requests库来发送HTTP请求,并解析JSON响应数据。如果下载成功,弹幕文件会被保存到本地,并打印文件名。
评论已关闭