乐于分享
好东西不私藏

我用AI写了一个B站评论抓取工具,全程只靠「说话」

我用AI写了一个B站评论抓取工具,全程只靠「说话」

这不是一篇教程,而是一次真实的AI编程实战记录。我不会写代码,但我用Claude Code,靠「说话」完成了一个完整工具的开发。

为什么要做这个工具?

作为一个B站内容创作者,我经常需要分析热门视频的评论区——看看观众在讨论什么、关心什么、吐槽什么。但B站的评论区翻起来太痛苦了,尤其是几百上千条评论的视频。

我想:能不能有个工具,给我一个B站链接,自动把所有一级评论和二级回复都抓下来,存成JSON方便分析?

说干就干。

第一轮:一句话启动

我的第一条提示词非常简单:

“我想要一个只要我提供bilibili视频地址,就能去抓取视频下面的一级和二级评论的软件。”

Claude Code立刻进入了Plan模式(规划模式),它没有急着写代码,而是先问我3个关键问题:

问题
我的选择
技术栈
Python + Web界面
输出格式
JSON文件
鉴权方式
有Cookie(我已登录B站)

这几个选择其实很关键。选Python是因为生态成熟、B站API资料多;选Web界面是因为我不想每次跑命令行;JSON格式则方便后续用AI分析评论内容。

第二轮:自动生成完整方案

Claude Code给我生成了一份详细的实现方案:

1
2
3
4
5
6
7
抓评论/├── app.py              # Flask主应用 + API路由├── bilibili.py         # B站API封装(评论抓取、BV转AID、wbi签名)├── templates/│   └── index.html      # Web界面├── output/             # 评论JSON输出目录└── requirements.txt    # 依赖

方案里包含了:

  • B站API端点(一级评论 x/v2/reply/main,二级评论 x/v2/reply/reply
  • wbi签名机制(B站2024年新增的反爬策略)
  • SSE实时进度推送
  • JSON输出结构设计

看完方案,我直接说“通过”,Claude Code就开始写代码了。

第三轮:代码自动生成

不到5分钟,4个文件全部生成完毕:

  • requirements.txt — 依赖声明
  • bilibili.py — 330行,B站API核心封装
  • app.py — Flask Web应用
  • templates/index.html — 完整的前端界面

我运行 python app.py,浏览器打开 http://localhost:5000,界面就出来了。粘贴一个B站链接,点击「开始抓取」——

第一个坑:错误 -352

然后就报错了:

错误: 获取评论失败: -352

我把这个错误直接告诉Claude Code:

它立刻分析出原因是B站的wbi签名验证失败,代码在遇到-352时没有自动重试wbi签名。于是它:

  1. 新增了 _signed_request() 统一请求函数
  2. 遇到 -352/-403 自动用wbi签名重试
  3. 默认启用wbi签名(use_wbi=True

第二个坑:签名后仍然 -352

重启后再试,新的错误:

“错误: wbi签名验证失败(-352),请更新Cookie(SESSDATA)”

这次签名生效了,但验证还是失败。Claude Code又做了两件事:

  1. 参数隔离 — 每次请求用params的副本,避免重试时旧wbi字段污染签名
  2. 错误信息优化 — 把单行错误改成多行,附带操作指引

第三个坑:账号未登录

我按指引拿到了SESSDATA,配置后再试:

“错误: 获取nav信息失败: 账号未登录,请检查Cookie”

这次Claude Code做了Cookie格式兼容处理——不管你粘贴的是纯值、带前缀、还是完整Cookie串,都能自动识别。

但问题还是没解决。

关键转折:我指出了真正的原因

我把上面的错误也发给了豆包,豆包给了我一个重要的排查线索,我直接告诉Claude Code:

“排查最常见的配置坑:只填了SESSDATA,但缺少其他必填Cookie字段。B站的登录态鉴权不止需要SESSDATA,部分程序会校验完整的Cookie链,缺少这些也会报未登录。必须补充:DedeUserID(用户ID)、bili_jct(CSRF Token)。这个说法你考虑到了吗?”

这条提示词是整个开发过程的转折点。

Claude Code立刻重构了Cookie配置模块:

  • 从单输入框 → 三个独立字段(SESSDATA、DedeUserID、bili_jct)
  • 新增「一键粘贴完整Cookie」模式
  • 所有字段自动保存到localStorage,下次不用重新填
  • Cookie格式自动规范化

最终效果

重启服务,配置好完整Cookie,粘贴一个B站视频链接——

成功了。实时进度显示:

1
2
3
4
5
6
7
8
9
10
Cookie已设置: SESSDATA=a1b2c3d4%2Cxxxx...视频: xxx (UP: xxx)AID: xxx, 预估评论数: xxx一级评论 第1页,已收集 20 条一级评论 第2页,已收集 40 条...二级评论 [1/15] 用户A 的 3 条回复二级评论 [2/15] 用户B 的 8 条回复...抓取完成!一级: 156,二级: 423

最终输出的JSON长这样:

完整提示词记录

以下是我在这次开发中说的每一句话:

轮次
我的提示词
解决了什么
1
“我想要一个只要我提供bilibili视频地址,就能去抓取视频下面的一级和二级评论的软件。”
确定需求,进入规划
2
回答3个选择题(技术栈/输出格式/鉴权方式)
确定技术方案
3
“通过”
批准方案,开始编码
4
“错误: 获取评论失败: -352”
修复wbi签名重试逻辑
5
“错误: wbi签名验证失败(-352),请更新Cookie(SESSDATA)”
修复参数污染问题
6
“错误: 获取nav信息失败: 账号未登录,请检查Cookie”
Cookie格式兼容
7
“排查最常见的5个配置坑:只填了SESSDATA,但缺少其他必填Cookie字段……”
补全DedeUserID和bili_jct

7轮对话,从零到可用。

我的3点感悟

1. AI编程的关键不是“会写代码”,而是“会描述问题”

整个过程我一行代码都没写。但我需要知道:我要什么、报了什么错、B站的鉴权机制是什么。这些领域知识比代码本身更重要。

2. 踩坑是正常的,关键是能精准反馈

第7轮的那条提示词之所以是转折点,是因为我把“领域知识”喂给了AI。它不知道B站需要三个Cookie字段,但我知道。AI负责实现,我负责判断——这就是人机协作。

3. Plan模式值得多用

Claude Code的Plan模式让我在写代码前就看清了整个方案。比起“先写再说”,“先想再做”效率高得多。


3个未来可升级点

1. 评论AI分析面板

目前只是抓取和展示,未来可以接入Claude API,对评论做情感分析、话题聚类、观点提取。比如自动总结“观众最关心的5个问题”,这对内容创作者来说价值巨大。

2. 多视频批量对比

支持同时输入多个视频链接,横向对比评论区数据——哪个选题互动率高、哪种内容引发争议、什么时间段评论最活跃。从“单视频分析”升级为“选题决策工具”。

3. 评论区舆情监控

定时抓取自己视频的新增评论,发现负面舆情自动预警,发现优质评论自动标记。从“被动查询”升级为“主动监控”,让创作者第一时间掌握观众反馈。

以上,既然看到这里了,如果觉得不错,随手点个赞、分享、推荐三连吧,如果想第一时间收到推送,也可以给我个关注~谢谢你看我的文章

我是老顽童周老师

一个在用正确方式学习AI的普通人