Python3实现B站视频弹幕抓取教程

Mia
Mia
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何使用Python3和requests模块抓取B站视频的历史弹幕数据。通过Chrome开发者工具分析网络请求,定位rolldate和dmroll接口,获取弹幕ID及时间戳。利用正则表达式解析返回的XML数据,按日期保存弹幕内容至本地文件,为后续词云或情感分析提供数据支持。

环境准备与前置条件

准备工作:

需要一个已登录的B站账号,否则无法查看历史弹幕记录。

一台联网的电脑以及常用的浏览器,例如Chrome。

配置Python3环境并安装requests模块,可使用以下命令进行安装,建议更换源以加速下载:


pip3 install request -i http://pypi.douban.com/simple

分析B站弹幕请求接口

抓取步骤:登录后进入目标视频页面,按下F12快捷键打开开发者工具,切换到Network(网络)标签以监听网络请求。

 

点击页面上的“查看历史弹幕”按钮,观察并获取发出的请求。



请求URL中rolldate后的数字代表该视频对应的弹幕ID。返回的数据中包含timestamp字段,表示弹幕日期,以及new字段,表示该日期的弹幕数量。


在历史弹幕列表中任选一天进行查看,此时会触发新的请求。

该请求包含dmroll、时间戳和弹幕号,用于获取指定日期的具体弹幕内容。例如,1507564800对应的时间是2017年10月10日0点0分0秒。



此请求返回的数据格式为XML。


数据解析与本地存储实现

使用正则表达式提取所有弹幕消息,匹配模式如下:


'<d p=".*?">(.*?)</d>'

拼接获取到的字符串,将所有弹幕内容保存至本地文件。


with open('content.txt', mode='w+', encoding='utf8') as f:  f.write(content)

参考代码如下,程序将弹幕按日期分别保存为单独的文件...由于数据量较大...


import requests
import re
import time
"""
  爬取哔哩哔哩视频弹幕信息
"""
# 2043618 是视频的弹幕标号,这个地址会返回时间列表
# https://www.bilibili.com/video/av1349282
url = 'https://comment.bilibili.com/rolldate,2043618'
# 获取弹幕的id 2043618
video_id = url.split(',')[-1]
print(video_id)
# 获取json文件
html = requests.get(url)
# print(html.json())
# 生成时间戳列表
time_list = [i['timestamp'] for i in html.json()]
# print(time_list)
# 获取弹幕网址格式 'https://comment.bilibili.com/dmroll,时间戳,弹幕号'
# 弹幕内容,由于总弹幕量太大,将每个弹幕文件分别保存
for i in time_list:
  content = ''
  j = 'https://comment.bilibili.com/dmroll,{0},{1}'.format(i, video_id)
  print(j)
  text = requests.get(j).text
  # 匹配弹幕内容
  res = re.findall('<d p=".*?">(.*?)</d>', text)
  # 将时间戳转化为日期形式,需要把字符串转为整数
  timeArray = time.localtime(int(i))
  date_time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
  print(date_time)
  content += date_time + '\n'
  for k in res:
    content += k + '\n'
  content += '\n'
  file_path = 'txt/{}.txt'.format(time.strftime("%Y_%m_%d", timeArray))
  print(file_path)
  with open(file_path, mode='w+', encoding='utf8') as f:
    f.write(content)

最终运行效果如下:



后续可对抓取的数据进行分词处理以生成词云,或进行情感分析,具体实现将在后续文章中介绍。

欢迎在下方留言分享您的学习心得,感谢您对本站的支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表