DEV Community

NexGenData
NexGenData

Posted on • Originally published at thenextgennexus.com

中国全网热榜聚合:用 Apify 一次抓取微博/百度/头条/抖音热搜(附代码)

想知道"此刻中国全网在聊什么",盯一个平台远远不够:微博热搜、百度热搜、今日头条热榜、抖音热点各有侧重,同一个事件在不同平台的热度和措辞还不一样。做品牌监测、舆情预警、内容选题的团队,往往要同时盯四五个榜单,再手动对齐去重——又累又容易漏。

这篇文章介绍一个开箱即用的方案:Apify 上的 China Trends Tracker(中国趋势汇总) 采集器。它一次调用就把微博、百度、头条、抖音 的热榜聚合成统一的结构化 JSON,还会用 cluster_id 把跨平台的同一话题归到一起。下面给出字段说明、可直接复制的代码、计费明细和常见问题。

1. 痛点:盯一个平台不够,跨平台对齐更累

  • 平台分散。 微博、百度、头条、抖音各有热榜,要全网视角必须逐个抓。
  • 口径不一。 各平台的排名、热度分、字段格式都不同,自己对齐成本高。
  • 跨平台去重难。 同一事件在四个榜单上各占一条,人工归并费时易错。
  • 要趋势就得定时。 单次快照看不出势头,需要持续采集形成时间序列。

2. 这个采集器能做什么

一次运行即可聚合中国主流平台的实时热榜:微博热搜、百度热搜、头条热榜、抖音热点 。每条话题返回来源平台、排名、热度分、话题链接和标签;并通过 cluster_id 把跨平台指向同一事件的话题聚成一类——这样你就能一眼看出"哪些事是全网在刷,哪些只是单平台局部热"。

核心参数:sources(要抓的平台列表,留空=全部;也可用别名 platforms / source / platform)、proxyConfiguration(默认住宅代理)。支持的平台值:weibobaidutoutiaodouyin

3. 适合谁用

  • 公关 / 舆情团队: 一个接口拿到全网热榜,跨平台监测品牌或行业话题。
  • 内容 / 新媒体: 找全网都在刷的话题做选题,避免只蹭到单平台的局部热。
  • 市场 / 研究: 把跨平台热度沉淀成时间序列,量化全网关注度。
  • 跨境 / 海外团队: 用一个统一数据源俯瞰中国热点,不必分别接四个平台。

4. 输出字段示例

每条热榜话题返回一条结构化记录:

字段 含义
source 来源平台(weibo / baidu / toutiao / douyin)
rank 该平台榜单排名
topic 话题 / 关键词
score 热度分
url 话题链接
label 话题标签(如 新 / 热 / 商业等)
cluster_id 跨平台聚类 ID(同一事件在多平台共享同一 cluster_id)

单条记录的 JSON 大致长这样:


    {
      "source": "weibo",
      "rank": 3,
      "topic": "示例热点事件",
      "score": 982000,
      "url": "https://s.weibo.com/weibo?q=...",
      "label": "热",
      "cluster_id": "c_01a2"
    }
Enter fullscreen mode Exit fullscreen mode

把同一 cluster_id 的记录聚合起来,就能看到一个事件在微博/百度/头条/抖音上分别排第几、热度多高。

5. 典型使用场景

  • 全网热点雷达:cluster_id 聚合,挑出在多个平台同时上榜的事件——这些才是真正的全网级热点。
  • 品牌跨平台预警: 匹配品牌 / 竞品关键词,任一平台上榜即告警。
  • 选题对比: 比较同一话题在不同平台的排名差异,判断在哪个平台投放更合适。
  • 关注度时间序列: 定时采集并累积,构建全网热度趋势指标。

6. 在 Apify 上运行

采集器地址:China Trends Tracker on Apify。注册即送 $5 免费额度通过此链接注册)。

一次拉取全网热榜并按跨平台聚类分组:


    from collections import defaultdict
    from apify_client import ApifyClient

    client = ApifyClient("YOUR_APIFY_TOKEN")
    run = client.actor("nexgendata/china-trends-tracker").call(run_input={
        "sources": ["weibo", "baidu", "toutiao", "douyin"],
    })

    clusters = defaultdict(list)
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        clusters[item.get("cluster_id")].append((item["source"], item["rank"], item["topic"]))

    # 找出在最多平台同时上榜的事件
    for cid, rows in sorted(clusters.items(), key=lambda kv: -len(kv[1]))[:10]:
        print(len(rows), "个平台:", rows[0][2])
        for src, rank, topic in rows:
            print("   ", src, "#", rank)

Enter fullscreen mode Exit fullscreen mode

计费透明:到底多少钱

采用按事件计费(Pay-Per-Event) :启动 $0.005 + 每条话题 $0.025 。四平台各取热榜头部,一次几十条话题通常在 $1 上下;注册赠送的 $5 免费额度足够先跑几次完整聚合。

定时调度:沉淀全网热度时间序列

热榜价值在趋势。建议在 Apify 上为这个采集器配一个 Schedule(定时任务) ,比如每 15–30 分钟跑一次,把结果累积到数据集或自有存储,就能得到跨平台的热度时间序列。采集器默认通过 Apify 住宅代理出口,整套流程跑在云端。

7. 相关 Actor:单平台深挖 vs 全网聚合

China Trends Tracker 给你全网广度 ;如果要对某个平台做深度 采集,搭配下面这些采集器,输出同样是结构化 JSON:

8. 常见问题

都聚合哪些平台?

微博热搜、百度热搜、今日头条热榜、抖音热点四个平台;可用 sources 指定只抓其中某几个,留空则全抓。

需要登录这些平台的账号吗?

不需要。聚合的都是各平台公开的热榜数据,无需账号或 Cookie。

cluster_id 是做什么的?

它把跨平台指向同一事件的话题归到同一类。聚合同一 cluster_id 的记录,就能看出某事件在各平台分别的排名与热度。

数据是实时的吗?

是。采集器在运行那一刻实时抓取各平台当前热榜;要看趋势建议配定时任务。

能拿到时间序列吗?

能。配一个 Apify 定时任务持续采集并累积结果即可形成跨平台热度时间序列。

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

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

现在就试: 在 Apify 上运行 China Trends Tracker · 注册领取 $5 免费额度

Top comments (0)