B站视频评论爬虫:如何完整爬取一级与二级评论并导出CSV?
【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper
凌晨一点,你为了写一份视频用户调研,正对着B站评论区一页一页往下翻。翻了二十分钟,才存下八十来条评论,楼中楼的回复更是理不清谁在回谁——手都酸了,数据还残缺。这不是你手速的问题,是方法的问题。BilibiliCommentScraper这个开源的B站视频评论爬虫,正是为这种场景准备的:把一级评论、二级评论、昵称、用户ID、发布时间、点赞数一次性完整搬进 CSV,你只管睡觉,它替你熬夜。
不调接口,它把自己伪装成"真人"
市面上不少爬虫走 B 站 API,省事是真省事,可拿到的往往只有前几十条,评论层级也丢得七七八八。BilibiliCommentScraper 换了一条更笨、也更稳的路——用 Selenium 驱动真实浏览器,模拟真人浏览网页。
你在网页上怎么操作,它就怎么操作:不断向下滚动,逼页面把评论一条条加载出来;遇到"查看全部"就点开;二级评论一页翻不完,就一页一页翻到底。模拟真人浏览,意味着页面能看到的评论,它都能拿到,包括 API 接口通常不给的楼中楼。这对你意味着什么?意味着你不用再对着残缺数据做情感分析、写调研报告,数据底座完整了,后面的分析才站得住。
一张速查卡:从零到 CSV 只要三行命令
别急着研究代码,先看全流程有多短:
| 步骤 | 操作 |
|---|---|
| 1 | 安装依赖:pip install selenium beautifulsoup4 webdriver-manager |
| 2 | 在video_list.txt里写入视频链接,每行一个 |
| 3 | 运行:python Bilicomment.py,首次按提示扫码登录一次 |
登录这步值得多说一句。它会在本地生成cookies.pkl,把你的登录态存下来。之后每次运行都自动带登录状态,不用反复扫码,你要做的只是把新视频链接追加进video_list.txt,然后回车。批量管理多个视频就是这么简单——每个视频会生成一个以视频 ID 命名的独立 CSV,互不干扰。
断点续爬:断电、断网、浏览器崩了,都吓不跑它
来做一个情景模拟,你感受一下:
你在爬一个评论上万的热门视频,进度走到 60%,笔记本没电了。
第二天开机,重新运行程序,它直接问都不问,接着上次的第 37 条一级评论继续爬,CSV 文件也在原来的基础上继续追加,不重复、不丢数据。
秘密藏在progress.txt里。这个文件像一张精确到毫米的书签,记录着"第几个视频、第几条一级评论、二级评论翻到第几页"。程序每次落笔前都会更新它,所以任何时刻中断,都能原路找回进度。想从头再来?删掉progress.txt即可。想跳过某个爬不动的视频?把video_count加一,干净利落。
同样的省心逻辑还体现在错误处理上:网络抖动、页面加载超时,程序会自动重试;实在爬不了的视频会被记进video_errorlist.txt,你事后扫一眼就知道哪个视频掉了队。
开爬前 60 秒检查清单
别等跑起来才发现少了什么,开爬前扫一遍这张清单:
- Python 3 已安装,依赖库已
pip install video_list.txt里每行是一个完整的 B 站视频 URL- 网络稳定(首次运行建议人在电脑前,方便扫码)
- 想从头爬?确认没有残留的
progress.txt - 如果之前登录过但 cookies 失效,删掉
cookies.pkl重新登录
全部打勾,就可以放心让程序跑一整晚了。
参数拧两下,热门视频也稳
默认参数适合大多数场景,但碰到 10 万+ 评论的爆款视频,页面会因为加载数据过多而内存崩溃。这时你需要动两个旋钮:
MAX_SCROLL_COUNT = 45 # 默认45次滚动,约能加载920条一级评论,可调小 max_sub_pages = 150 # 二级评论最多翻150页,设 None 表示不限制滚动次数越少,页面越轻,越不容易崩;二级评论页数设个上限,同样是为了省内存。嫌请求太密集、怕被平台"限流"?加一行随机延时:
import random time.sleep(random.uniform(1, 5)) # 每次等待1~5秒,随机分散请求节奏把参数调成适合自己视频的量级,爬取过程就从"碰运气"变成了"可预期"——这也是这个工具和一次性脚本最大的区别。
拿到 CSV 之后:这张表怎么读
程序跑完,同级目录下会出现以视频 ID 命名的 CSV 文件,每一行是一条评论,字段结构如下:
- 编号:该评论在整个评论流中的位置
- 隶属关系:一级评论 / 二级评论,层级一目了然
- 被评论者昵称、被评论者ID:一级评论显示"up主",二级评论显示被回复的那位用户
- 昵称、用户ID:评论者本人信息
- 评论内容、发布时间、点赞数:分析最常用的三个字段
截图里每一行都带着完整归属信息:哪条是楼中楼、回复的是谁、多少赞、什么时候发的——这份结构化数据可以直接喂给 pandas 做情感分析、词频统计或社群网络研究,不需要再手工整理。
翻车现场急救箱
用的时候难免遇到几个小状况,提前给你备好解药:
CSV 用 Excel 打开是乱码?文件是 UTF-8 编码,Excel 默认没认出来。改用记事本打开,或走"数据 → 从文本/CSV 导入"并手动选择 UTF-8,即可正常显示。
单元格显示$NAME?报错?这是 Excel 把以-开头的昵称当成了公式,例如"-Ghauster"。不是数据坏了,换个导入方式或直接用代码读取就好。
爬到的评论数比页面标称的少?正常。B站评论数存在虚标,部分评论可能被隐藏或屏蔽。判断标准很简单:你手动把网页滚到底,看到的最后几条评论和 CSV 末尾对得上,就是完整爬全了。
报 Permission denied?多半是 CSV 或 progress.txt 被其他程序占用,比如你正开着 Excel 看它。关掉占用文件,或换管理员身份运行,即可解决。
程序长时间没动静?大概率是访问太频繁被平台"冷处理"了。重启程序即可断点续爬,若频繁出现,就按前面说的把延时拉长。
你的第一份完整评论数据集,现在就能开始
从手工翻页到全自动爬取,从残缺数据到层级完整的 CSV,差的只是一个对的工具。BilibiliCommentScraper 的价值不在于代码多炫,而在于它把"完整、断点、批量、省心"这四个词落到了实处,让每一个想认真做数据分析的人,都能用十分钟搭好自己的数据管道。
想立刻上手?克隆下来跑一遍就知道:
git clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper.git cd BilibiliCommentScraper pip install selenium beautifulsoup4 webdriver-manager把你想分析的视频链接写进video_list.txt,运行python Bilicomment.py,剩下的交给它。如果你在爬取中发现新的坑、或者有更好的参数方案,也欢迎把经验带回项目——这类工具的价值,正是在使用者的反馈中一点点长起来的。数据驱动的时代,先拿到完整数据的人,赢在起跑线上。
【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考