B站评论爬虫零门槛上手一次登录把完整评论数据自动搬进Excel【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraperBilibiliCommentScraper 是一个面向普通人的 B站评论爬虫你把视频列表扔给它它就用浏览器替你一页页翻完整个评论区把一级评论、二级评论、昵称、用户ID、发布时间、点赞数全部整理成 Excel 能直接打开的 CSV 文件。不管你是想分析观众反馈的UP主还是需要评论数据写论文的同学都能靠它绕开自己写爬虫这件事把精力留给真正重要的分析。这篇文章会沿着一条完整的上手路线带你走一遍先看它到底能给你什么再一步步跑通第一次采集然后学会断点续爬和参数调优最后用一段代码把数据变成结论。全程用你能直接照抄的命令和代码不需要额外脑补。先看它替你干了哪些活动手之前先弄清这份工具的能力边界免得期待落空。它的核心工作就三件翻全评论区B站评论是滚动加载的它模拟真人下滑页面把能看到的评论一层层加载出来而不是只拿接口返回的前几十条。保留对话层级评论区是树状的——一级评论直接回复视频二级评论回复一级评论。它把谁回复了谁的关系完整记录不会拆散对话。批量跑视频你把视频链接一行一个写进清单它按顺序逐个处理每个视频单独输出一份数据文件。除此之外还有两个容易被忽略但很省心的设计一次扫码登录后自动记住你的身份cookie 存成本地文件以及把进度实时写盘中断后能接着上次的位置继续跑。后面两章会分别展开。跑完一个视频后你会拿到类似下面这样一张表每一行是一条评论层级、时间、点赞一目了然起步前的三件小事装环境、装依赖、拿到项目这个工具需要你电脑上有三样东西缺一不可但都不难Python 3运行脚本的基础环境3.8 及以上版本都可以。Chrome 浏览器推荐用最新版工具会基于它模拟浏览器操作。项目本体把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper.git cd BilibiliCommentScraper然后安装三个 Python 库。打开命令行执行这一条就够pip install selenium beautifulsoup4 webdriver-manager说明selenium负责驱动浏览器beautifulsoup4负责解析网页结构webdriver-manager负责自动下载匹配你 Chrome 版本的驱动。如果你后面想用 pandas 做数据分析可以顺手加装一个pip install pandas。装完之后项目文件夹里应该能看到Bilicomment.py主程序、video_list.txt视频清单、README.md官方说明。建议先扫一眼 README它把参数含义写得很清楚后面调参时会用到。第一次跑通全流程从视频清单到数据文件第一步填视频清单打开video_list.txt每行写一个B站视频链接程序会从上往下依次处理https://www.bilibili.com/video/BV17M41117eg https://www.bilibili.com/video/BV1QF411q73H https://www.bilibili.com/video/BV1c14y147g6带不带链接后面的?spm_id_from...参数都可以程序会自动从链接里提取视频 ID。第二步启动程序在项目目录下运行python Bilicomment.py程序会先弹出一次浏览器窗口跳到B站登录页。此时你只需要做一件事扫码登录你的B站账号。登录成功跳转后回到命令行按回车程序会把登录状态保存成cookies.pkl文件——这是你唯一一次需要手动登录之后每次运行它都会自动登录直到 cookie 失效失效后删掉cookies.pkl重新登一次即可。第三步等待自动采集按下回车后程序会切换成无头模式不弹窗、不加载图片省内存继续工作。接下来每个视频都会经历这样的流程打开视频页向下滚动加载评论区直到滚不动为止逐条读取一级评论写入 CSV发现某条一级评论有查看全部按钮或二级评论列表时点进去逐页翻完所有二级评论处理完一个视频自动开始下一个。控制台会实时打印进度比如第1个视频BV17M41117eg-第3个一级评论下的全部内容已完成爬取你可以随时观察它跑到哪了。第四步拿到结果每个视频生成一个以视频 ID 命名的 CSV 文件比如BV17M41117eg.csv和代码文件放在同一目录。中途被跳过的视频会记录在video_errorlist.txt里方便你事后排查。读懂输出的每一列九栏字段与评论层级CSV 文件共九列每一列对应一类信息。以 README 和实际输出为准字段含义如下列名含义编号该评论所属一级评论的位置序号从0开始不是行号隶属关系一级评论 或 二级评论被评论者昵称这条评论回复的对象一级评论固定为up主被评论者ID回复对象的用户ID一级评论固定为up主昵称发表这条评论的用户昵称用户ID发表这条评论的用户ID评论内容完整的评论文本发布时间发布时间精确到分钟点赞数该评论获得的点赞量两个容易误解的地方提前说明被评论者昵称/ID里的一级评论显示up主这不是爬出来的是程序自己写入的文字表示这条评论直接回复视频作者。同一编号下的多条二级评论共享一个编号代表它们挂在同一条一级评论下面。用编号隶属关系两列就能把整棵评论树还原出来。中途关掉也不怕断点续爬是怎么记住进度的这是整个工具最值得单独讲的功能。爬热门视频动辄一两个小时如果中途断网、电脑断电、或者你手动关了程序进度不会丢。秘密就在progress.txt这个文件里——程序每处理完一个节点就把当前位置写进去格式长这样{video_count: 1, first_comment_index: 15, sub_page: 114, write_parent: 1}四个字段分别对应四个坐标video_count已经完整跑完第几个视频从0开始计数first_comment_index当前视频处理到第几条一级评论sub_page当前这条一级评论的二级评论翻到了第几页write_parent当前一级评论是否已经写入文件1已写0未写。下次运行时程序读到这个文件会直接跳到上次停下的位置继续连已经写了一半的 CSV 也是接着追加不会从头再来。你可以把它理解成看书时夹在书里的书签——书签在哪下次就从哪接着读。更妙的是这个文件还能反过来当遥控器用想从头重爬删除progress.txt程序会当你是第一次运行想跳过某个死活爬不动的视频把video_count加 1程序就直接从下一个视频开始想跳过某条一级评论把first_comment_index改成想跳过的位置。不过要注意手动改这三个值时write_parent要跟着改成 0否则会出现一级评论没写入就直接跳走的情况。把爬取节奏调成你的三个参数与两种延时默认参数对大多数视频够用但遇到超大评论量的热门视频你可能会想调整节奏。所有参数都集中在Bilicomment.py里改完保存、重新运行即可。1. 滚动次数MAX_SCROLL_COUNT默认45B站每向下滚动一次加载约20条一级评论45次大约对应920条。数值越大抓得越多但浏览器内存占用也越大可能直接把页面撑崩。程序注释里有个实测参考滚动45次时曾完整爬取标称评论数7443条的视频实际拿到3581条。拿不准就先用默认值。2. 二级评论页数max_sub_pages默认150控制单条一级评论下的二级评论最多翻多少页。想无限制就改成max_sub_pages None但强烈不建议——热门评论的回复可能上百页内存会先撑不住。150页已经是很宽裕的上限。3. 滚动停顿SCROLL_PAUSE_TIME默认4秒每次滚动后等多久再滚下一次。调大一些更稳代价是更慢。4. 两种延时策略代码里的time.sleep(2)是固定延时。如果发现程序频繁被B站冷处理控制台长时间没动静可以换成随机延时让请求节奏更像真人import random time.sleep(random.uniform(1, 5)) # 每次随机等1到5秒注意滚动次数和二级评论页数是一对贪心组合两个都拉满内存压力会叠加。稳妥的做法是二选一优先满足你的目标——要覆盖面就多滚动要对话深度就多翻二级评论。常见问题自查清单按症状对症下药跑起来之后大概率会遇到下面几种情况按症状对照处理即可。症状一CSV 用 Excel 打开是乱码文件是 UTF-8 编码的老版本 Excel 默认按 GBK 打开就会乱。两种解法先用记事本打开确认内容正常或者用 Excel 的数据 → 从文本/CSV 导入导入时手动选择 UTF-8 编码。另外如果某个单元格显示$NAME?那不是数据坏了而是内容以-开头比如昵称-GhausterExcel 把它误当成公式了忽略即可。症状二报错 Permission denied几乎都是文件被占用CSV 或progress.txt正被 Excel、编辑器等其他程序打开或者当前用户没有目录写入权限。关掉占用文件的程序再试还不行就以管理员身份运行程序。注意程序对这类错误有自愈机制——遇到权限错误会等10秒重试最多重试50次你通常来得及去关掉那个占着文件的程序。症状三爬热门视频时浏览器崩溃典型表现是控制台打印网页崩溃后自动重启浏览器。如果崩溃发生在滚动加载阶段还没开始写数据说明是滚动次数太多导致内存耗尽把MAX_SCROLL_COUNT调小比如30或20。如果崩溃发生在爬取中途不用慌程序会重启浏览器并靠断点续爬接着跑但建议顺手清理一下项目目录里的临时缓存文件夹程序用完后可以自行删除。症状四拿到的评论数比B站显示的少先别怀疑工具。B站存在评论数虚标部分评论会被平台隐藏、封禁或由用户自行删除所以实际爬到的数量通常小于标称数量。验证方法很简单手动打开视频页滚动到底看你最后能看到的几条评论和 CSV 里最后几条是否一致。一致就说明所有可见评论都完整拿到了。症状五程序长时间没动静多半是访问太频繁被B站限流了有时还会弹出验证码。先重启程序——它会断点续爬不丢数据。如果反复出现就按上一章的方法把延时改长或改成随机延时。拿到数据之后五分钟跑一个评论分析小样例数据到手分析就交给 pandas。下面这段代码可以直接存成.py文件运行帮你快速建立对数据的基本认知import pandas as pd df pd.read_csv(BV17M41117eg.csv, encodingutf-8) # 评论总量与层级构成 print(f总评论数{len(df)}) print(f一级评论{df[df[隶属关系] 一级评论].shape[0]}) print(f二级评论{df[df[隶属关系] 二级评论].shape[0]}) # 点赞最高的前5条评论 top df.nlargest(5, 点赞数)[[昵称, 评论内容, 点赞数]] print(top) # 最活跃的评论者 active df.groupby(用户ID)[昵称].count().sort_values(ascendingFalse).head(10) print(active)在此基础上你可以继续扩展把发布时间解析成小时看观众几点最活跃按隶属关系分组比较一级和二级评论的话题差异甚至用点赞数做加权找出真正有影响力的声音。数据是结构化的分析思路就能自由发挥。现在就可以动手到这里你已经知道它是什么、怎么用、怎么调、出问题怎么处理。剩下的就是亲自跑一次。完整流程再压缩成四步git clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper.git cd BilibiliCommentScraper pip install selenium beautifulsoup4 webdriver-manager python Bilicomment.py然后编辑video_list.txt填入链接 → 扫码登录 → 按回车 → 等待 → 打开生成的 CSV。最后给你两条实用建议第一第一次测试选一个评论量几百的视频跑通流程后再碰热门视频体验会顺滑很多第二记得给这个项目点个 star——作者在 README 里专门写了这句话好用的话别吝啬。祝你顺利拿到第一份完整的B站评论数据。【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考