支持任意历史时间筛选的 bilibili
弹幕爬虫。
- 弹幕历史筛选:支持设置起始时间参数
start
与结束时间参数end
,用以爬取 [start, end] 时间段内的所有弹幕。 - 弹幕全量获取:鉴于使用的 b 站接口每天至多返回 500 条弹幕,若某天的弹幕数超过 500,则多余的弹幕会依次安排至往后的天数返回,若将
start
与end
参数均设置为None
,则可以完全爬取当前视频的全部弹幕。 - 多格式导出:支持 csv、xlsx、json 等多种格式导出弹幕数据。
- 用户信息爬取:可选参数
user_info
,用以在爬取视频弹幕后,通过弹幕中的 midHash 字段反查用户信息,继而获取弹幕发送者的用户详细。 - 多账号自动切换:支持配置多个 cookie,账号被风控时自动切换。
- 批量任务支持:支持 aid/bvid 批量导入,适合大规模弹幕数据采集。
- 任务断点续传:支持在某次任务中断后,继续根据上次爬取的进度增量式爬取,避免重复爬取所带来的时间损耗以及数据浪费。
字段名 | 数据类型 | 说明 |
---|---|---|
id | np.int64 | 弹幕 dmid。唯一,可用于操作参数 |
progress | np.int32 | 视频内弹幕出现时间。毫秒 |
mode | np.int32 | 弹幕类型。1 2 3:普通弹幕 4:底部弹幕 5:顶部弹幕 6:逆向弹幕 7:高级弹幕 8:代码弹幕 9:BAS 弹幕(仅限于特殊弹幕专包) |
fontsize | np.int32 | 弹幕字号。18:小 25:标准 36:大 |
color | np.uint32 | 弹幕颜色。十进制 RGB888 值 |
midHash | str | 发送者 mid 的 HASH。用于屏蔽用户和查看用户发送的所有弹幕,也可反查用户 id |
content | str | 弹幕内容。utf-8 编码 |
ctime | np.int64 | 弹幕发送时间。时间戳 |
idStr | str | 弹幕 dmid。字串形式。唯一,可用于操作参数 |
attr | np.int32 | 弹幕属性位。bit0:保护 bit1:直播 bit2:高赞 |
date | str | 弹幕发送日期。年/月/日 |
time | str | 弹幕发送时间。时/分/秒 |
字段名 | 数据类型 | 说明 |
---|---|---|
id | np.int64 | 弹幕 dmid。唯一,可用于操作参数 |
progress | np.int32 | 视频内弹幕出现时间。毫秒 |
mode | np.int32 | 弹幕类型。1 2 3:普通弹幕 4:底部弹幕 5:顶部弹幕 6:逆向弹幕 7:高级弹幕 8:代码弹幕 9:BAS 弹幕(仅限于特殊弹幕专包) |
fontsize | np.int32 | 弹幕字号。18:小 25:标准 36:大 |
color | np.uint32 | 弹幕颜色。十进制 RGB888 值 |
midHash | str | 发送者 mid 的 HASH。用于屏蔽用户和查看用户发送的所有弹幕,也可反查用户 id |
content | str | 弹幕内容。utf-8 编码 |
ctime | np.int64 | 弹幕发送时间。时间戳 |
idStr | str | 弹幕 dmid。字串形式。唯一,可用于操作参数 |
attr | np.int32 | 弹幕属性位。bit0:保护 bit1:直播 bit2:高赞 |
date | str | 弹幕发送日期。年/月/日 |
time | str | 弹幕发送时间。时/分/秒 |
uid | int | 用户 mid |
user_space_link | str | 用户空间链接 |
name | str | 用户昵称 |
sex | str | 用户性别 |
archive_count | int | 用户稿件数 |
fans | int | 粉丝数 |
friend | int | 关注数 |
likes | int | 点赞数 |
face | str | 用户头像链接 |
is_senior_member | str | 是否为硬核会员。0:否;1:是 |
level | int | 用户等级 |
sign | str | 用户签名 |
spacesta | str | 用户状态。0:正常;-2:被封禁 |
-
安装依赖:
pip install -r requirements.txt
-
配置参数: 在 settings.py 文件中修改以下参数:
aids
:视频的 aid 列表,可选。若 aids 为空,则必须提供 bvids 参数。若 from_file 参数为 True,且正确配置了 file 参数,则忽略bvids
:视频的 bvid 列表,可选。若 bvids 为空,则必须提供 aids 参数。若 from_file 参数为 True,且正确配置了 file 参数,则忽略task
:任务名称,用于设置记录信息的文件名cookies
:替换为你自己的 cookie,若提供多个 cookie,将在当前账号被监测到的时候自动替换为下一个账号page
:视频分 pstart
:指定时间段开始,YYYY-MM-DD 格式,为 None,表示从视频发布时间开始end
:指定时间段结束,YYYY-MM-DD 格式,为 None,表示至当前时间结束delay
:每次请求的延迟时间,建议大于 1sfile_format
:转存的文件格式,支持 csv,xlsx,jsonsave_name
:转存的文件名称列表,必须与 aids/bvids 中提供的视频个数一致save_dir
:转存的文件夹,默认为当前目录下的 Data 文件夹中user_info
:是否添加 bilibili 弹幕用户信息字段。开启该功能可能会导致处理时间过长,因为涉及到通过 midHash 反查用户信息以及网络请求
除此之外,若视频的
aid
/bvid
列表来源自文件中的某一字段,则指定file
参数中的各个键值对,以批量设置aids
/bvids
/save_name
参数可供参考用以获取特定关键字搜索下的视频
aid
/bvid
列表的github
开源项目:MediaCrawler -
运行程序:
python main.py
- Python 3.8 或更高版本
- 建议合理设置请求延迟,避免账号被风控。
- 批量处理建议使用文件导入模式。
- 开启用户信息爬取时,处理速度会显著下降。
欢迎对本项目提出建议或贡献代码!请通过以下步骤参与贡献:
-
Fork 本仓库。
-
创建新分支:
git checkout -b feature/your-feature-name
-
提交更改并推送到你的分支:
git commit -m "Add your commit message" git push origin feature/your-feature-name
-
提交 Pull Request。
本项目基于 MIT License 开源。
如有任何问题或建议,请联系作者:
- Email: 2513502304@qq.com