
B站评论爬虫怎么用这个开源工具能把评论区完整搬进CSV连楼中楼都不放过【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper凌晨一点半你还在跟评论区较劲。某个刚发出去的视频一夜爆了评论区涌进来几千条留言。老板或导师丢来一句话做个分析看看观众到底在聊什么。你只好硬着头皮往下翻——翻到某条热评点开查看全部发现下面还压着一整栋楼中楼也就是二级评论一条套一条。按这个速度翻完得等到天亮。这大概是每个想拿到B站评论数据的人都撞过的墙网页只肯懒洋洋地加载前几十条热门评论下的回复藏在层层折叠里手动收集几乎不可能更别说还要保留谁回复了谁的层级关系。而开源项目 BilibiliCommentScraper一个用 Selenium 驱动的B站视频评论爬虫就是专门来拆这堵墙的。它像一条架在评论区和你电脑之间的传送带把你在网页上能看到的全部评论——一级评论、二级评论、昵称、用户ID、发布时间、点赞数——原封不动地送进一张干净的 CSV 表格里。本文就从它能给你什么讲起再一步步带你把这条传送带架起来。先弄清一件事它和手动翻网页的本质区别你可能想问B站不是有接口吗不是有现成插件吗为什么非要这个工具关键区别在两点。第一很多方案只能拿到表面数据——要么只给你页面初始加载的那二三十条要么干脆丢掉评论层级把楼中楼里的回复混成平铺的一条。而 BilibiliCommentScraper 是模拟真人浏览器的行为去看完整个评论区不断向下滚动加载更多点开每条热评的查看全部翻完所有回复页。你在网页里能看到的它都收得到。第二它是为批量可持续设计的。把几十个视频链接往清单里一放它就能自己跑一整晚中途断网、浏览器崩溃都不怕下次运行自动接着上次的进度继续。一句话概括别的办法是截个屏它是把整片评论区搬回你家——搬回来的还是整理好的、带层级结构的表格不是一堆需要二次加工的碎片。先看看结果你能拿到一张什么样的表说再多不如看一眼成品。运行结束后每个视频都会生成一个以视频ID命名的 CSV 文件比如BV17M41117eg.csv长这样表格里的每一行是一条评论包含 9 个字段字段含义编号该一级评论在列表中的序号隶属关系这条评论是一级评论还是二级评论被评论者昵称 / 被评论者ID它回复的是谁一级评论这里固定写up主昵称 / 用户ID这条评论的发布者评论内容评论原文发布时间精确到分钟点赞数收到的点赞量注意那个隶属关系列——这正是这个工具区别于普通爬取的地方。一级评论和二级评论的从属关系被完整保留你可以轻松回答哪条热评底下讨论最激烈这类问题也能直接按被评论者把同一个人的所有回复归拢到一起。拿到这张表后续做词频统计、情感分析、互动排行都只是几行 pandas 的事。怎么把这张表弄到手三个步骤讲清楚第 0 步准备环境需要 Python 3 和本机安装的 Chrome 浏览器然后在命令行安装三个依赖库pip install selenium beautifulsoup4 webdriver-managerselenium负责驱动浏览器beautifulsoup4负责解析页面webdriver-manager负责自动帮你下载匹配版本的浏览器驱动。装完就算齐活不需要配什么环境变量。第 1 步把视频链接写进清单在项目根目录找到或新建video_list.txt每行放一个视频链接https://www.bilibili.com/video/BV17M41117eg https://www.bilibili.com/video/BV1QF411q73H https://www.bilibili.com/video/BV1c14y147g6想一次处理 50 个视频直接往下加行就行。每个视频会各自输出一个 CSV互不干扰。第 2 步运行扫码登录一次python Bilicomment.py第一次运行会弹出一个浏览器窗口提示你登录B站账号——扫码登录即可。登录成功后回车程序会把登录状态存进本地的cookies.pkl文件以后每次运行都自动带上身份不用再扫码除非 cookie 失效删掉这个文件重新登一次就好。之后浏览器会转入后台干活模式自动打开每个视频、滚到底部加载评论、逐条抓取并写入 CSV。你只要看着终端里不断滚动的进度日志就行。真实使用中你迟早会碰到的几个细节断点续爬关掉电脑也不慌这是我最喜欢的设计。程序每处理完一点内容就会把进度写进progress.txt{video_count: 1, first_comment_index: 15, sub_page: 114, write_parent: 1}翻译过来就是第 2 个视频第 16 条一级评论它的二级评论已经翻到第 114 页。中途断电、断网、或者你想关电脑去睡觉直接关掉下次运行它会自动回到那个位置继续已经写进 CSV 的数据不会重复。如果某个视频死活爬不过去比如被B站风控了最省事的跳过办法是打开progress.txt把video_count的值加 1保存重新运行。同理想从头再来就删掉这个文件。爬多少、爬多深两个参数决定你的胃口打开Bilicomment.py你会看到两个跟量有关的开关MAX_SCROLL_COUNT 45 # 向下滚动的次数默认45次预计最多覆盖920条一级评论 max_sub_pages 150 # 单条热评下二级评论最多翻多少页None表示不限为什么默认是 45 而不是 999因为每滚一次页面浏览器内存就涨一截。滚动次数太多、加载的评论太多网页会直接崩溃——作者实测过滚动 45 次足以完整爬完一条标称 7443 条评论的视频实际抓到 3581 条。评论量特别大的视频建议反而把这两个值调小别贪。怎么判断抓全了先别信那个评论数B站显示的评论总数经常虚标——实际可见评论往往比标称数量少因为有些评论被隐藏、删除或被屏蔽了。所以别用数字对不对得上来判断是否抓全正确做法是手动打开视频网页一路滚到底看看你看到的最后几条评论和 CSV 里的最后几条是不是同一批。对得上就是真·完整。热门视频爬不动、爬崩了怎么办评论区特别长的视频可能出现两种情况浏览器崩了程序会自动重启浏览器并断点续爬你不用管。程序长时间没动静终端好几分钟不打印新进度多半是访问太频繁被B站冷处理了。这时可以手动重启程序让它接着爬或者给代码加上随机延时让请求节奏更像真人import random time.sleep(random.uniform(1, 5)) # 随机等1到5秒拿到 CSV 后两个小坑提前避雷用 Excel 打开 CSV 出现乱码文件是 UTF-8 编码Excel 默认按本地编码读会乱。解决办法用记事本/VS Code 打开或者 Excel 里用数据 → 从文本/CSV导入并指定 UTF-8。另外如果某个昵称以-开头比如-GhausterExcel 会把整格当成公式报出$NAME?错误。这不是数据问题是 Excel 的锅用 pandas 或文本编辑器看就完全正常。谁适合用它谁该绕道如果你是下面这几类人这个工具基本是为你量身定做的内容创作者 / UP主想知道观众到底在意什么哪条评论讨论最热烈按点赞数排个序就是现成的选题灵感库。做研究的学生或分析师情感分析、话题演化、社群互动网络都需要完整、带层级的数据集这张 CSV 正好是现成的输入。做产品运营的人想系统了解某类视频下用户的真实反馈和吐槽批量跑一遍就能拿到横向对比数据。但也要说清楚边界它只适合公开可见评论的采集爬取前请尊重平台规则控制请求频率、别拿数据去做侵权或骚扰性用途数据也建议只留在本地分析。它也不是什么万能采集器——如果你的需求是实时监控评论区每分每秒的新评论这个面向一次性完整导出的工具并不合适那是另一类方案的主场。最后让传送带替你跑一晚下次再被评论太多、看不过来困住时不用继续在网页里做无用功了。git clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper.git cd BilibiliCommentScraper pip install selenium beautifulsoup4 webdriver-manager把视频链接填进video_list.txt运行python Bilicomment.py扫码登录然后去睡觉。第二天早上醒来每个视频的完整评论数据已经在 CSV 里排好队等你了——连楼中楼里最角落的那条回复都替你数好了点赞数。数据时代的差距往往就藏在别人翻了一夜你睡了一觉之间。【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考