跳到主要内容
KANG LAB.
项目索引
PROJECT / 007进行中

WBHOT

微博热搜与话题主持人的长时序数据采集与可视化分析系统

年份
2026
状态
进行中
分类
Python / Web / 工具
更新
2026.09.30
  • Python
  • Flask
  • ECharts
  • Weibo API
  • Time Series
WBHOT — 项目视觉

Overview

WBHOT 是一套长期运行的微博热搜数据采集与分析系统。它调用微博官方移动端接口,按固定间隔抓取热搜榜单、话题元信息与帖子明细,落盘为不可回溯的时间序列快照,并提供远程管理面板与论文级可视化页面。

项目为一项混合媒介生态(hybrid media ecosystem)下的议程设置实证研究提供数据支撑:研究关心热搜词条的实际发起者与推动者,以及平台机制、认证媒体与个体认知三层各自的议程权重。

Problem

微博热搜只呈现"此刻在榜"的词条,历史榜单无法回溯。而"议程领导权"这类问题恰恰依赖长时段数据,采集起步越晚,可用的时间序列越短。

接口层面有三个约束:

  • 榜单接口只给出排名与热度,不提供任何话题归属信息;
  • 主持人、媒体发布数、阅读量与讨论量藏在话题详情接口中,需要逐条二次请求;
  • 匿名请求被平台直接拒绝——热搜返回 432、话题返回 ok:-100,访客 cookie 流程与 TLS 指纹模拟均无效,必须携带登录态。

三点叠加决定了:这是一个必须"尽早开始、长期挂机"的数据工程问题,而不是一次性的抓取脚本。

Architecture

Weibo Mobile API
↓
spider.py  (热搜榜 + 话题详情 + 主持人解析)
↓
JSON 快照  (每轮一个文件,约 23KB)
↓
web.py     (Flask 管理面板 + 可视化聚合接口)
↓
ECharts 可视化 / 数据透视表 / CSV 导出

Features

  • 零成本采集:直接调用官方移动端接口,替代按结果计费的第三方抓取服务
  • 主持人解析:从话题头卡提取主持人、媒体发布数、阅读量与讨论量,作为"议程领导权"的直接可观测指标
  • 长时序快照:按固定间隔落盘,每轮一个 JSON 文件,支持长期无人值守运行
  • 远程管理面板:启停任务、调整参数、在线更新登录态、查看日志、打包导出数据
  • 失效告警:登录态过期时推送 iOS 通知,避免采集静默断档
  • 论文级可视化:折线 / 条形 / 饼图 / 散点 / 热力五类图表,外加数据透视表,支持筛选联动与 PNG / SVG / CSV 导出

Data

采集情况(截至 2026-09-29):

连续采集   2026-09-15 23:31:55 ~ 2026-09-29 23:15:27(14 天)
快照文件   364 个,跳过损坏 0
清洗后记录 18,200 条(热搜主榜口径)

Lessons

几处踩坑后固化的设计:

  • 榜单接口一次返回 4 个榜单(主榜 / 实时上升 / 文娱 / 置顶要闻),同一词条可跨榜出现且热度口径不同——这不是重复数据,垂类榜共现本身即编码变量;
  • 无主持人的词条没有对应头卡,占比约四成,属真实现象而非解析缺陷,被保留为有效编码类别;
  • 数据清洗只保留一处实现,图表与透视表共用,避免同一筛选条件下算出两个数字;
  • 透视表合计按行、列各自独立聚合:可加指标(记录数)才求和,去重指标与峰值指标各自按本口径取值。

Roadmap

  • 议题类别自动标注,支撑三层议程占比编码
  • 帖子明细批量采集,供主题建模与微观层分析
  • 快照月度归档压缩
  • 主持人跨词条网络分析

系统目前为私有部署,长期挂机采集中。

更新日志

  1. 2026.09.15
    • 跑通微博官方移动端接口,解析热搜榜单与话题主持人字段
    • 首轮快照落盘,开始固定间隔采集
  2. 2026.09.16
    • 部署至阿里云 ECS,systemd 常驻 + 反向代理,开机自启
    • Web 管理面板与登录态过期推送上线
  3. 2026.09.24
    • 新增数据透视表:行列交叉统计与 CSV 导出
    • 迁移为独立站点:自有域名、独立证书与配置,与同机其它项目解除配置耦合
  4. 2026.09.29
    • 连续采集满 14 天:364 个快照、18,200 条清洗后记录

相关项目