DEV Community

NexGenData
NexGenData

Posted on • Originally published at thenextgennexus.com

B站数据采集实战:用 Apify 抓取 Bilibili 视频搜索与评论区(附代码)

B 站(Bilibili,哔哩哔哩)已经从二次元社区长成了中文互联网最重要的视频内容池之一:测评、教程、游戏、知识区、品牌种草,几乎什么都有。对做内容研究、品牌监测、AI 语料、舆情分析的团队来说,B 站的视频元数据和评论区是一座金矿。但它的搜索接口和评论接口都带签名校验(WBI 签名),自己写爬虫光是搞定签名就够喝一壶,更别说还要处理分页、限流和反爬。

这篇文章介绍两个开箱即用的 Apify 采集器:Bilibili Video Search(视频搜索)Bilibili Video Comments(评论采集) 。一个按关键词批量拉视频元数据,一个按视频抓评论区,都返回结构化 JSON,云端运行、自动处理签名与分页。下面给出字段说明、可直接复制的代码、计费明细和常见问题。

1. 痛点:B 站数据值得抓,但不好抓

  • WBI 签名校验。 B 站的搜索和评论接口都要求动态计算 w_rid 签名参数,签名算法会变,自己维护成本高。
  • 分页与限流。 评论区层级深、分页多,拉多了容易被限流。
  • 字段零散。 播放、点赞、弹幕、收藏、投币散落在不同字段,还要自己清洗对齐。
  • 规模化难。 想批量监测上百个关键词或视频,手写脚本很快就维护不动。

2. 两个采集器:搜索 + 评论

Bilibili Video Search —— 按关键词抓视频元数据。 输入一个关键词,返回该关键词下的视频列表(BV 号、标题、UP 主、播放/点赞/弹幕/收藏数、时长、发布日期、封面等)。可选加购两项增值处理:对标题与简介做情感打分、从简介中提取创作者社媒账号。

核心参数:keyword(必填)、max_results(默认 30)、addonSentimentScored(情感分析,按条加价)、addonSocialHandlesExtracted(社媒账号提取,按条加价)。

Bilibili Video Comments —— 按视频抓评论区。 传入一个或多个视频(BV 号或链接),返回评论文本、作者、等级、点赞、回复数、时间戳等。通过当前的 WBI 签名评论接口抓取,可设置每个视频最多抓多少条,并可选对用户匿名化处理。

核心参数:videos(BV 号或 URL 列表)、max_comments_per_video(默认 100)、anonymize_users(匿名化,默认关闭)、proxyConfiguration(默认住宅代理)。

3. 适合谁用

  • 内容 / 选题研究: 按关键词找出某品类下播放与互动最高的视频,反推选题方向。
  • 品牌 / 市场监测: 追踪品牌或产品相关视频的传播与评论区口碑。
  • AI 语料团队: 采集中文视频元数据与真实评论文本,构建中文语料库。
  • 舆情 / 社媒分析: 把评论区文本接入情感分析与话题聚类管道。

4. 输出字段示例

视频搜索(Video Search)每条视频返回:

字段 含义
bvid / aid / url BV 号 / AV 号 / 视频链接
title / description 标题 / 简介
author / mid UP 主昵称 / UP 主 ID
play_count / likes / danmaku_count / favorites 播放 / 点赞 / 弹幕 / 收藏数
duration / pub_date 时长 / 发布日期
tag / thumbnail 标签 / 封面图
keyword / scraped_at 来源关键词 / 抓取时间

评论采集(Video Comments)每条评论返回:

字段 含义
bvid / aid / rpid 视频 BV 号 / AV 号 / 评论 ID
text 评论内容
author / user_mid / user_level 评论者昵称 / ID / 等级
likes / reply_count / is_top 点赞数 / 回复数 / 是否置顶
timestamp / ctime / scraped_at 发布时间 / 原始时间戳 / 抓取时间

评论记录的 JSON 大致长这样:


    {
      "bvid": "BV1xx411c7mu",
      "rpid": 123456789,
      "text": "讲得很清楚,已三连",
      "author": "某用户",
      "user_level": 5,
      "likes": 328,
      "reply_count": 12,
      "is_top": false,
      "timestamp": "2026-06-10T09:30:00Z",
      "scraped_at": "2026-06-13T00:00:00Z"
    }
Enter fullscreen mode Exit fullscreen mode

5. 典型使用场景

  • 爆款选题反推: 用搜索按 play_count / likes 排序,找出某关键词下表现最好的视频与 UP 主。
  • 评论区舆情: 抓取目标视频评论,结合情感分析看观众真实反馈。
  • 品牌投放复盘: 监测品牌合作视频的播放、互动与评论口碑,量化投放效果。
  • 中文语料构建: 批量采集视频元数据 + 评论文本,作为中文 NLP 训练素材。

6. 在 Apify 上运行

采集器地址:Bilibili Video Search · Bilibili Video Comments。注册即送 $5 免费额度通过此链接注册)。

关键词搜索 + 抓取该视频评论:


    from apify_client import ApifyClient

    client = ApifyClient("YOUR_APIFY_TOKEN")

    # 1) 按关键词搜索视频
    search = client.actor("nexgendata/bilibili-video-search").call(run_input={
        "keyword": "机器学习",
        "max_results": 30,
    })
    videos = list(client.dataset(search["defaultDatasetId"]).iterate_items())
    top = sorted(videos, key=lambda v: v.get("play_count", 0), reverse=True)[0]
    print("最高播放:", top["title"], top["play_count"], top["bvid"])

    # 2) 抓取这个视频的评论
    comments = client.actor("nexgendata/bilibili-video-comments").call(run_input={
        "videos": [top["bvid"]],
        "max_comments_per_video": 200,
    })
    for c in client.dataset(comments["defaultDatasetId"]).iterate_items():
        print(c["likes"], c["text"])

Enter fullscreen mode Exit fullscreen mode

计费透明:到底多少钱

两个采集器都用按事件计费(Pay-Per-Event) ,没有月费:

  • 视频搜索: 启动 $0.005 + 每条视频 $0.02;可选加购:情感分析 +$0.02/条、社媒账号提取 +$0.10/条。
  • 评论采集: 启动 $0.005 + 每条评论 $0.015。

例:搜 30 个视频约 $0.6;抓 200 条评论约 $3。注册赠送的 $5 免费额度足够先把两个工具都跑通。

关于签名与代理

评论接口走当前的 WBI 签名 评论 API,采集器自动计算签名参数;评论采集默认通过 Apify 的住宅代理 出口,整套流程跑在 Apify 云端,无需你自己维护签名或代理。

7. 相关 Actor:搭建完整的中国社媒数据栈

把 B 站和其它中国社媒、电商、财经数据源组合起来,输出统一的结构化 JSON:

8. 常见问题

需要登录 B 站账号吗?

不需要。搜索与评论采集都基于公开接口,无需账号或 Cookie。

数据是实时的吗?

是。采集器在运行那一刻实时拉取,播放、点赞、评论数都是当时的最新值。

WBI 签名要自己处理吗?

不用。评论采集器内置当前的 WBI 签名计算,签名参数由采集器自动生成。

一次能抓多少?

搜索可设 max_results;评论可对每个视频设 max_comments_per_video(默认 100),并支持一次传入多个视频。

能保护评论者隐私吗?

可以。评论采集提供 anonymize_users 选项,对用户信息做匿名化处理;采集内容仅限公开评论数据。

输出能直接导入 pandas 或 Excel 吗?

可以。结果存为 Apify 数据集,支持一键导出 CSV / Excel / JSON,或通过数据集 API 直接读入 pandas。

现在就试: 运行 Bilibili Video Search · 运行 Bilibili Video Comments · 注册领取 $5 免费额度

Top comments (0)