B站评论如何完整获取BilibiliCommentScraper 爬虫工具从入门到实战【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper如果你正在做内容运营、用户研究或舆情分析一定遇到过这种尴尬明明想分析B站视频的评论区却只能手动截图、复制忙活一晚上拿到的数据还不到真实评论的零头。开源工具BilibiliCommentScraper就是为了根治这个痛点而生的——它基于 Selenium 模拟真人浏览器能帮你完整爬取B站视频的评论数据包括一级评论、二级评论、昵称、用户ID、发布时间与点赞数并且支持批量视频、断点续爬。本文会从零开始带你跑通第一个采集任务再逐步解锁调优、排障和数据分析的进阶玩法。一个让人崩溃的深夜场景假设你是一位科普UP主刚发布了一条关于结石到底有多痛的视频评论区炸了——几百条一级评论下又挂着上千条二级评论大家分享各自的就医经历这正是你下一期选题的金矿。于是你打开浏览器开始手动收集。复制、粘贴、翻页、再复制……两小时后你发现只存下来 30 多条还全部是一级评论那些最有价值的互动对话全丢了。更崩溃的是你手一抖关掉了文档进度归零。这不是你笨而是手动方案天然就有天花板。卡住你的其实是这三道坎坎一可见的永远只是冰山一角。B站热门视频的评论区动辄数千条而页面默认加载、手动滚动能看到的只是其中一部分。没有工具的辅助你永远在采集被截断的数据。坎二对话的家谱被拆散了。评论区是典型的树状结构一级评论直接挂在视频下二级评论挂在某条一级评论下。绝大多数简单爬虫只抓表层导致谁回复了谁这条关系链彻底断裂后续做互动分析时完全无从下手。坎三批量与中断是压垮人的两座大山。要分析 10 个、20 个视频时重复劳动指数级增长爬取中途程序崩溃、网络抖动一切又要从头再来——这种挫败感足以劝退大多数人。BilibiliCommentScraper 的出现就是同时解决这三道坎。破局思路为什么是模拟真人浏览器而不是调接口市面上不少方案走的是 B站开放接口路线简单是简单但接口往往有配额限制、字段缺失甚至随时变更。而 BilibiliCommentScraper 选择了另一条路用 Selenium 驱动 Chrome像真人一样打开视频页、向下滚动、点击查看全部和下一页再从渲染完成的页面里提取评论。页面能看到什么它就能拿到什么。对比维度直接调接口本工具Selenium 模拟浏览器数据完整性受配额与返回条数限制页面可见评论基本都能拿到二级评论经常拿不全逐条翻页抓取支持自定义上限登录门槛需要申请权限/维护 Token手动扫码一次Cookie 永久复用批量能力需自行处理限流内置 video_list.txt 批量队列中断恢复通常需要自研内置断点续爬随时可停可续一次扫码之后自动登录。首次运行会弹出浏览器你扫码登录一次程序就把登录态写进同目录下的cookies.pkl。只要这个文件不被删除之后的每次运行都会自动免登录入场非常适合挂机跑整夜。三分钟跑通第一个采集任务先别急着研究原理我们直接上手。你只需要完成四步。第一步准备环境系统里装好Python 3.8和Chrome 浏览器建议最新版。打开终端安装依赖pip install selenium beautifulsoup4 webdriver-managerwebdriver-manager会自动下载与浏览器匹配的驱动省去了手动配 WebDriver 的麻烦。如果之后还想做数据分析顺手装个 pandas 会更方便pip install pandas第二步把视频地址写进清单在项目根目录新建或编辑video_list.txt每行放一个视频 URL程序会按顺序逐个处理https://www.bilibili.com/video/BV17M41117eg https://www.bilibili.com/video/BV1QF411q73H https://www.bilibili.com/video/BV1c14y147g6想加多少加多少这就是你的批量任务清单。第三步启动并完成首次登录运行主程序python Bilicomment.py第一次运行时Chrome 窗口会先打开一次终端出现类似请登录登录成功跳转后按回车键继续的提示。你扫码登录 B站跳转成功后回到终端按回车程序就会进入正式的采集流程。第四步看结果采集是自动化的程序先不断向下滚动把一级评论全部加载出来再逐条展开二级评论、翻页抓取。每个视频跑完后会在同目录生成一个以视频ID命名的 CSV 文件比如BV17M41117eg.csv。上面那张示例图就是某个视频采集结果的真实样貌——每行一条评论字段规整、层级分明。读懂 CSV 里的每一列打开生成的 CSV你会看到 9 列数据含义如下列名含义说明编号该评论在视频评论列表中的序号从 0 开始递增隶属关系一级评论 / 二级评论标明评论所在层级被评论者昵称被回复对象的昵称一级评论固定显示up主被评论者ID被回复对象的用户ID一级评论固定显示up主昵称本条评论发布者的昵称用户ID本条评论发布者的用户ID评论内容完整评论文本发布时间精确到分钟的时间戳点赞数该评论收获的点赞数注意一级评论的被评论者两列显示up主是程序主动写入的标记用来表示这条评论直接回复视频作者并非抓取到的真实昵称。有了隶属关系和编号两列你就能在数据层面完美还原评论区的树状对话结构这是很多轻量爬虫给不了的。断点续爬中断不再是灾难这是本工具最值得夸的杀手锏程序每处理完一条评论都会把进度写入progress.txt。哪怕中途断电、断网、浏览器崩溃重启程序后它都能精准接上上次的位置继续往下爬。progress.txt 里到底存了什么文件内容是一个很简单的 JSON{video_count: 1, first_comment_index: 15, sub_page: 114, write_parent: 1}四个字段的含义video_count已经完整跑完的视频数量从 0 开始计数first_comment_index当前视频处理到第几条一级评论sub_page当前这条一级评论的二级评论翻到了第几页write_parent当前一级评论是否已写入 CSV1 已写0 未写。三种常见的进度干预手段想全部重来删掉progress.txt程序会从头开始想跳过某个爬坏了的视频把video_count直接加 1下个视频就是起点想跳过部分评论把first_comment_index改成你想开始的位置即可。这意味着你完全不需要守着程序跑完——把任务挂上出门吃个饭回来接着跑它认得路。把采集速度与稳定性调到最佳工具开箱即用的默认参数已经够稳但针对不同量级的视频你可以在Bilicomment.py里做三处关键调优。控制一级评论的加载深度程序靠反复滚动到底部来触发懒加载每滚一次大约多出 20 条一级评论。默认的滚动上限是 45 次大约对应 920 条一级评论MAX_SCROLL_COUNT 45 # 滚动次数上限越大抓得越多但内存占用越高对于评论量特别大的爆款视频建议适当调小这个值防止页面因数据量过大而崩溃。给二级评论翻页设个上限二级评论往往体量惊人默认最多翻 150 页如果你的视频评论不多也可以设成无限制max_sub_pages 150 # 二级评论最大页数想不设限就写 None设一个合理上限既能控制耗时也能显著降低内存压力。用随机延时降低被限流概率连续高频操作容易被平台特别关注。稳妥的做法是引入随机延时让请求节奏更像真人import random time.sleep(random.uniform(1, 5)) # 随机等待 1~5 秒浏览器层面的省内存小动作工具默认已经开启了无头模式、静音、禁用图片加载和 GPU 加速这些都是为了在长跑任务中省内存、防崩溃。另外程序会在代码目录下创建临时缓存文件夹来存放浏览器数据如果跑久了发现磁盘占用变大可以在重试前手动清掉它。高频问题快问快答Q1CSV 用 Excel 打开乱码怎么办答CSV 是 UTF-8 编码。要么先用记事本/VS Code 打开确认内容要么在 Excel 里用数据 → 从文本/CSV 导入并手动选择 UTF-8。用 pandas 读也完全没问题。Q2报错 Permission denied 怎么处理答九成是文件被占用了——比如你正用 Excel 开着正在写入的 CSV或者progress.txt被其他程序锁住。关掉占用程序即可如果确认没被占用可以尝试以管理员身份运行。程序本身对这类错误做了最多 50 次、每次间隔 10 秒的自动重试。Q3爬到的数量比页面上标的评论数少答这是正常现象。B站存在评论数虚标部分评论会被平台隐藏、屏蔽或由用户自行删除。判断是否抓全的方法很简单手动把网页滚到评论底部对照最后几条评论是否和 CSV 尾部一致——一致就说明所有可见评论都已到手。Q4处理超大热门视频时页面崩了答不用慌程序会自动重启浏览器并断点续爬。如果是在还没滚到底就开始爬的阶段反复崩溃说明数据量超过了页面承载此时应调小MAX_SCROLL_COUNT。拿到数据之后可以做什么采集只是第一步数据到手后的想象力才真正打开。先看一段最基础的分析代码import pandas as pd df pd.read_csv(BV17M41117eg.csv, encodingutf-8) print(总评论数:, len(df)) print(一级评论数:, (df[隶属关系] 一级评论).sum()) print(二级评论数:, (df[隶属关系] 二级评论).sum()) print(平均点赞数:, round(df[点赞数].mean(), 2)) # 按小时看评论活跃分布 df[发布时间] pd.to_datetime(df[发布时间]) print(df.groupby(df[发布时间].dt.hour).size())三个立刻能落地的场景内容创作者从高赞评论里挖选题灵感识别观众最关心的痛点反哺下一期视频市场与舆情监控品牌相关视频的评论区走向第一时间发现负面声音和用户真实需求学术研究者基于一级/二级关系构建用户互动网络做情感分析、话题演化研究。别忘了合规这条底线能力越大越要克制。请务必遵守以下原则只采集公开可见的评论不碰任何需要登录权限才能看的私密内容控制请求频率避免对平台造成压力这也是工具内置延时机制的意义所在数据仅用于个人研究、学习等正当用途不要用于商业牟利或侵犯他人权益的场合涉及个人昵称、用户ID等数据时注意脱敏与保管防止泄露。出发前的自查清单正式开工前逐项确认下面这些待办能帮你少走很多弯路Python 3.8 与 Chrome 已安装依赖已通过 pip 装好video_list.txt里的 URL 每行一个格式正确首次运行已扫码登录cookies.pkl已生成根据目标视频的评论量调好了MAX_SCROLL_COUNT与max_sub_pages已了解progress.txt的四个字段知道怎么续跑、怎么跳过已安排合理的延时策略避免高频请求触发限流明确数据的用途边界合规使用。如果这些都对上了那就动手吧。获取项目只需一行命令git clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper编辑好video_list.txt运行python Bilicomment.py扫码登录后把剩下的交给程序。建议第一次先从评论量较小的视频试水熟悉节奏后再挑战热门爆款。当你看到那份结构完整、层级清晰的 CSV 时会发现原来拿到 B站全量评论真的可以这么省心。【免费下载链接】BilibiliCommentScraperB站视频评论爬虫 Bilibili完整爬取评论数据包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考