一、案例背景与采集目标
热搜榜是社交平台上「此刻大家在聊什么」的一张快照。榜单不长,通常几十条,每条就几样东西:排名、话题、热度值、标签。它看起来简单,却是观察舆论走向最有信息量的一类数据——因为它是随时间变化的,一小时前和一小时后的榜单,讲的可能是两个故事。
这一案例我们做的是「定时采、连续存、对比看」。采一次只能得到一张快照,价值有限;每隔一小时采一次、每次都带上采集时间,攒出十几个时间点,就能画出话题的热度曲线,还能一眼看出谁是新上榜、谁是刚掉榜。
1.1 这一篇用哪些真实站点
示范站点是微博热搜榜的公开榜单页,地址 https://s.weibo.com/top/summary。不登录时能看到的是一份「实时热搜榜」:一列排名、一列话题、一列热度值,部分条目还带「热」「新」「沸」「爆」这类角标;页面顶部另有置顶或推广条目。这个站点有登录风控:短时间浏览次数一多就会弹出登录提示,因此课堂练习只看公开可见的这一屏,不登录、不点进话题内部。
延伸再配一个结构更稳、更容易复现的站点:百度热搜榜 https://top.baidu.com/board?tab=realtime(静态榜单页,字段同样是排名 / 话题 / 热度,练习时可以作为兜底)。此外B 站全站排行 https://www.bilibili.com/v/popular/rank/all 也提供公开排行榜页,可作对照。
1.2 这个案例要拿到什么
- 榜单上每条话题的排名、话题名、热度值与话题链接;
- 把「1234.5万」「1.2亿」这类中文热度写法换算成数字,方便排序与比较;
- 每条都打上采集时间戳,按小时存档;
- 用两个时间点的数据做对比,找新上榜与掉榜话题;
- 观察某一条话题在连续几个时间点里的热度变化趋势。
1.3 为什么热搜榜比新闻列表难采
| 难点 | 具体表现 | 对策 |
|---|---|---|
| 页面动态加载 | 榜单常由脚本实时渲染,静态源码里看不到条目 | 让 WorkBuddy 驱动浏览器打开页面再读取 |
| 热度值不是数字 | 写成 1234.5万、1.2亿、986 等混合写法 | 统一规则换算成整数或浮点数 |
| 榜单一直在变 | 两次打开同一条的排名都可能不同 | 每次采集都记录采集时间,按时间点分开存 |
| 有登录风控 | 微博热搜榜浏览频繁后会弹出登录提示 | 只采无需登录可见的部分,不绕过登录 |
1.4 采集节奏怎么定
不建议几分钟采一次——既没意义,也给对方服务器添负担。课堂练习推荐每小时一次,一天攒 12~24 个时间点已经足够看出趋势。如果只想在课上跑通,也可以手动间隔十几分钟采两三次,先把「对比」这件事做出来。
1.5 热搜榜其实不止一张
以微博为例,热搜不是孤零零一张榜,而是「一张主榜 + 若干分榜」:主榜是实时热搜总榜,另外还有按领域切分的分类榜。不同榜单的排序口径、条目数量都不一样。
课堂练习建议先只盯总榜,把「定时采、连续存、对比看」这条链路跑通;等流程稳了,再决定要不要把分类榜也纳入,或者同时挂上百度热搜做横向对照。
这也正是字段表里专门留「榜单类型」一列的原因——两张榜的话题名可能重复,不写清是哪一张,数据一合并就分不清了。
目标站点与交付产物
下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。
| 项目 | 内容 |
|---|---|
| 示范站点 | 微博热搜榜 https://s.weibo.com/top/summary 榜单结构简单(排名/话题/热度),但需要 Cookie,教学上以「结构解析 + 热度值清洗」为主 |
| 延伸站点 |
|
| 交付产物 |
|
| 难度 | ★★☆ 中 |
| 合规提示 | 榜单属平台公开信息,单次低频采集可接受;不得高频轮询、不得用于商业分发。教学演示建议用百度/知乎榜单这类结构更稳定的页面。 |
二、数据源与字段设计
目标页面是微博热搜榜的公开榜单页 https://s.weibo.com/top/summary(形态是榜单页:一列排名、一列话题、一列热度值,顶部另有置顶或推广条目)。为避免登录与风控风险,本案例只采无需登录即可看到的榜单区域,不深挖话题内页。
2.1 站点信息表
| 站点全称 | 网址 | 页面形态与接口 | 规模与角色 |
|---|---|---|---|
| 微博 · 热搜榜(公开榜单页) | https://s.weibo.com/top/summary | 榜单页,含排名 / 话题 / 热度值 / 角标,顶部另有置顶与推广条目 | 实时总榜约 50 条,另设分榜;未登录仅可见部分,浏览频繁会要求登录 |
| 百度热搜 · 实时榜 | https://top.baidu.com/board?tab=realtime | 静态榜单页,结构稳定,字段为排名 / 话题 / 热度 | 约 50 条,适合作为课堂复现的兜底站点 |
| B 站 · 全站排行榜 | https://www.bilibili.com/v/popular/rank/all | 公开排行榜页,含视频标题 / 播放量 / 弹幕数 | 视频类榜单,字段与热搜不同,可作对照 |
| 知乎 · 热榜 | https://www.zhihu.com/hot | 页面及接口返回含标题与热度 | 有登录墙,只讲结构,不作为示范站点 |
2.2 完整字段表
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
采集时间 | 本次采集的时刻 | 2026-10-08 09:00 | 按小时存,是时间维度的关键,必须每期都记 |
排名 | 话题在榜上的位置 | 1 | 从 1 开始;置顶与推广条目不占正式排名 |
话题 | 热搜话题名 | 国庆假期返程高峰 | 保持原文,含书名号、标点,不要截断 |
话题链接 | 话题详情页地址 | https://s.weibo.com/weibo?q=%23国庆假期返程高峰%23 | 绝对地址,含 URL 编码,用于回溯;只记录不点开 |
热度值原文 | 页面上的原始热度写法 | 1234567 | 微博热搜多为纯数字;延伸到百度 / 知乎榜可能写成「1234.5万」 |
热度值 | 换算后的数字 | 1234567 | 统一成整数;万 = 10000,亿 = 100000000 |
标签 | 话题烈度的角标 | 沸 | 常见「热」「新」「沸」「爆」;没有就留空 |
榜单类型 | 总榜 / 分类榜 | 总榜 | 同一平台可能有多个榜,须写清是哪一张 |
榜单位次变化 | 相比上一期的升降 | 上升 3 位 | 由两期数据比对得到,不是页面上直接给的 |
是否推广位 | 是否为商业推广条目 | 否 | 微博热搜顶部含推广条目,必须标注或剔除 |
话题领域 | 话题所属分类 | 社会民生 | 由关键词规则或人工打标,用于分领域统计 |
快照批次 | 本批次的编号 | 20261008_09 | 与采集时间一一对应,多期对比时用来区分 |
2.3 热度值换算规则(这一节的重头戏)
微博热搜本身是纯数字,但延伸到百度、知乎这类榜单,热度很少直接写成数字,更多是「1234.5万」「1.2亿」这种中文单位写法。要比较大小、算变化,必须换算成数字。规则其实就三条:
| 原始写法 | 含义 | 换算结果 | 说明 |
|---|---|---|---|
986 | 九百八十六 | 986 | 没有单位,直接就是数字 |
12.3万 | 12.3 乘以一万 | 123000 | 「万」= 10000 |
1234.5万 | 1234.5 乘以一万 | 12345000 | 小数照乘,再去掉多余零 |
1.2亿 | 1.2 乘一亿 | 120000000 | 「亿」= 100000000 |
3.5k | 部分平台用英文单位 | 3500 | 「k」= 1000,按平台说明处理 |
2.4 总榜与分榜对照表
| 榜单 | 字段差异 | 采集建议 | 口径提醒 |
|---|---|---|---|
| 微博实时热搜总榜 | 排名 / 话题 / 热度值 / 角标,顶部有推广位 | 课堂默认采集对象 | 推广条目不占正式排名 |
| 微博分类榜(如文娱榜) | 字段同上,条目按领域筛选 | 流程跑通后再纳入 | 须用「榜单类型」与其他榜区分 |
| 百度热搜实时榜 | 排名 / 话题 / 热度(含「万」写法) | 作为兜底与横向对照 | 热度需按「万」换算成数字 |
| B 站全站排行 | 视频标题 / 播放量 / 弹幕数 | 只作对照,不并表 | 字段与热搜不同,不能直接合并 |
AI 助手小贴士|热度值是中文单位混写,最容易出错。让 AI 先只做换算、把原文和结果并排给你,你抽查几条确认规则对了,再往下走。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请只处理热度值这一列:保留原文,新生成一列换算后的数字,并逐行说明换算依据,我抽查几条后再继续。
课程思政|数据安全与法治素养 · 只采看得见的,不碰看不到的
热搜榜上不带登录就能看到的部分,属于公开信息;而话题背后的用户发言、转发关系、个人主页,则涉及大量个人信息。做榜单分析,就老老实实停在榜单元数据这一层,不去深挖个人内容——这既是法律要求,也是专业自觉。
三、零代码操作步骤
工具与技能|先看清三个角色,再动手
本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。
| 角色 | 负责什么 | 在本案例里具体做什么 |
|---|---|---|
| 你 | 确认字段清单、验收结果、清洗与合规把关 | 盯字段清单、核对结果、处理异常(如验证码) |
| WorkBuddy | 接中文指令:探字段 → 批量采 → 清洗 → 导出交付物 | 拆解本篇的采集任务并跑完全量、产出交付物 |
| 浏览器技能 BrowserSkill | 以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理 | 打开热搜榜页,先确认不登录能看到多少条 |
五步操作主线(全课程统一,每一篇都按这个顺序推进):
- 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
- 现场踩点(浏览器技能 BrowserSkill):打开
https://s.weibo.com/top/summary,让它只报告一件事:不登录能看到多少条、字段有哪些。 - 小样试采(WorkBuddy):采下当前时间点的全部可见条目,并注明本次采集时间。
- 核对与清洗:① 排名有没有从 1 连续排下来;② 话题标题有没有被截断;③ 热度原文有没有丢(「1.2 亿」这类要保留原文再另算数字列)。
- 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
用浏览器技能 BrowserSkill 打开 https://s.weibo.com/top/summary(微博热搜榜),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。- 先确认能不能采。让 WorkBuddy 打开
https://s.weibo.com/top/summary看看不登录能看到多少条;如果只看到几条就按可见范围来,不要试图登录或绕过。 - 采第一个时间点。要求它把当前可见的榜单采下来,字段按字段表,并注明本次采集时间。
- 先核对字段。看排名有没有从 1 连续排下来、话题有没有截断、热度值原文有没有丢、标签有没有采到。
- 做热度换算。让它按换算规则生成数字列,你抽查「1.2亿」「1234.5万」等几条是否算对(微博本身是纯数字,重点是延伸到其他榜时)。
- 存成第一个文件。文件名带上采集时间,例如
hot_20261008_09.xlsx。 - 隔一段时间采第二个时间点。课上可间隔十几分钟,实际使用建议按小时。存成
hot_20261008_10.xlsx。 - 做两期对比。说「请对比两个时间点,找出新上榜、掉榜、以及排名上升下降较多的话题」。
- 观察趋势。把两个文件合成一张带时间列的长表,就能看某条话题的热度是在涨还是在退。
四、提示词模板与追问技巧
下面这段可以直接复制。关键是把真实网址、字段、热度换算规则、时间戳、按时间点存文件这几件事说死。
请帮我采集微博热搜榜的公开榜单页。
【目标页面】微博热搜榜公开页,地址:https://s.weibo.com/top/summary
【采集范围】不登录即可看到的榜单部分,约 30~50 条
【兜底站点】若微博页面读取受限,改用百度热搜 https://top.baidu.com/board?tab=realtime
【需要字段】按这个顺序:
1. 采集时间(本次采集的时刻,格式 2026-10-08 09:00)
2. 排名(从 1 开始;置顶与推广条目不占正式排名)
3. 话题(保持原文,不要截断)
4. 话题链接(绝对地址,含 URL 编码)
5. 热度值原文(页面上怎么写就怎么记,例如 1234567、1.2亿、1234.5万)
6. 热度值(换算成数字:万=10000,亿=100000000)
7. 标签(热 / 新 / 沸 / 爆,没有就留空)
8. 榜单类型(总榜 / 分类榜)
9. 是否推广位(是 / 否)
10. 快照批次(如 20261008_09)
【输出要求】
1. 先在对话里给我表格预览,我确认后再导出
2. 文件名 hot_20261008_09.xlsx,保存到当前工作目录
3. 这只是第一次采集;稍后我会让你再采一次,两次要能对比
【合规要求】
- 只采榜单上公开可见的内容,不要点进话题内部
- 不要尝试登录、不要绕过任何访问限制
- 请求之间间隔 2 秒以上,出现登录提示立即停止
4.1 三条常用追问指令
追问一(修换算):
「1.2亿」被算成了 120000,这是错的,正确是 120000000。
请按「万=10000、亿=100000000」重新换算所有热度值,并保留原文列。
追问二(两期对比):
现在我发给你第二个时间点的榜单文件。
请按「话题名」对齐两期数据,输出:新上榜话题、掉榜话题、
排名上升最多和下降最多的各 5 条,并给出热度变化。
追问三(拼长表):
请把两个时间点的结果纵向合并成一张长表,
保留「采集时间」列,按话题分组,方便看同一话题的热度变化。
AI 助手小贴士|两期对比最容易把「同一话题」当成两个话题。让 AI 先按话题名对齐,再做比较,结果才可信。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先按话题名把两个时间点的数据对齐,再告诉我哪些话题在两个时间点都出现了、它们的热度怎么变的。
五、结果核对、清洗与保存
先看某一次采集的结果样例(示例数据):
| 采集时间 | 排名 | 话题 | 热度值原文 | 热度值 | 标签 | 是否推广位 |
|---|---|---|---|---|---|---|
| 2026-10-08 09:00 | 1 | 国庆假期返程高峰 | 4821357 | 4821357 | 沸 | 否 |
| 2026-10-08 09:00 | 2 | 多地开启降温模式 | 3982410 | 3982410 | 热 | 否 |
| 2026-10-08 09:00 | 3 | 新款手机发布会定档 | 3158760 | 3158760 | 新 | 否 |
| 2026-10-08 09:00 | 置顶 | 某品牌秋季新品预热 | — | 是 |
5.1 四项核对
- 条数:是不是按可见范围采全了,有没有中途被登录提示打断;
- 排名:是不是从 1 连续排下来,有没有跳号,置顶条目有没有混进正式排名;
- 热度换算:抽查纯数字与「万」「亿」两种写法各一条,算对没有;
- 时间戳与批次:整批的采集时间是不是同一个时刻,别混进别的批次。
5.2 清洗与对比指令
请对本次榜单结果做以下处理:
① 去掉话题名的首尾空格;
② 热度值统一成整数;热度值原文列保持不变;
③ 把「置顶 / 推广」条目单独抽到一张表,不要混进正式排名;
④ 按排名升序排列,并新增一列「热度名次复核」:按热度值从大到小重排的名次;
⑤ 和上一时间点对比,输出新上榜、掉榜、上升、下降四类话题;
⑥ 把结果按采集时间纵向追加到 hot_all.xlsx 累积表里。
5.3 文件命名与归档
hot_20261008_09.xlsx ← 09 点的快照(原始,保留)
hot_20261008_10.xlsx ← 10 点的快照
hot_all.xlsx ← 所有快照纵向合并的长表(做趋势用)
hot_compare_1008.xlsx ← 当日两期对比结果
hot_log.txt ← 日志:每次采集时刻、条数、异常
5.4 一条热度曲线怎么读
把多期快照拼成长表之后,挑一条话题看它的热度值随时间怎么变,常见有三种形状:
- 单峰:短时间冲到顶再回落,多半是突发事件;
- 爬坡:连续几个时间点稳步上升,往往是持续发酵的话题;
- 平台期:长期挂在中段不掉,通常是常态化的关注点。
形状本身就是信息。但别忘了在报告里写清:这些都只是「关注度随时间的变化」,不等于事件本身的轻重。
AI 助手小贴士|画热度曲线前,先把长表整理成「时间 × 话题 × 热度」三列。形状对了,后面用 Excel 或 BI 工具都很容易出图。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请把累积长表整理成「采集时间、话题、热度值」三列,并挑出热度连续上升的 5 个话题。
课程思政|诚信与职业操守 · 榜单是镜子,不是武器
热搜榜能反映关注度,但不能等同于事实,更不是可以随意操控的对象。做数据分析的人,要如实呈现榜单原貌,不挑对自己有利的时间点、不掐头去尾制造结论。用数据说真话,是这份工作最基本的职业操守。
六、常见问题与合规红线
6.1 五个高频问题
| 现象 | 原因 | 怎么处理 |
|---|---|---|
| 屏幕上有榜单,采回来却是空的 | 榜单由脚本动态渲染,静态源码里没有 | 让 WorkBuddy 驱动浏览器打开后再读取 |
| 热度值算错了 | 「万」「亿」单位换算规则没写清 | 在提示词里写明 万=10000、亿=100000000,并抽查 |
| 两次采集对不上同一话题 | 话题名写法有空格或标点差异 | 清洗时去掉空格,统一标点后再对齐 |
| 浏览几次就被要求登录 | 微博热搜榜对未登录访问有频次限制 | 立即停,拉长间隔、降低频率;仍受限就改用百度热搜兜底 |
| 置顶推广条目混进了正式排名 | 榜单顶部的推广位与自然位样式接近 | 按「是否推广位」列单独抽出,不要参与排名统计 |
6.2 三条合规红线
- 只采公开可得部分。不登录、不绕过访问限制,不采集用户发言、转发关系等涉及个人的信息。
- 频率要克制。榜单变化以小时计,每小时一次足够;不要分钟级轮询。
- 结论要留白。热搜排名受多种因素影响,报告中应说明局限,不能把上榜直接等同于「社会共识」。
另外提醒一句:置顶与推广条目不要混进正式排名去统计。它们的位置和样式都在模仿自然条目,但性质完全不同;字段表里「是否推广位」这一列,就是留给它们的位置。
课程思政|工匠精神与严谨求实 · 一条热度值也要算准
「1.2亿」写成 120000,看着只差几个零,结论却会天差地别。数据工作里没有「大概差不多」,每个数字都要能说出它是怎么来的。把换算规则写清楚、把原文留着、把结果抽查一遍——这份较真,就是专业。
七、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。
1热搜榜数据最有价值的地方在于?
- A. 条目数量多
- B. 界面好看
- C. 可以随时间连续采集,观察热度变化
- D. 采集速度快
2「1.2亿」换算成数字应该是多少?
- A. 12000
- B. 12000000
- C. 1200000000
- D. 120000000
3采集榜单时,第一列最应该记录的是?
- A. 采集时间
- B. 文件大小
- C. 浏览器版本
- D. 页面标题
4榜单在屏幕上能看到,采回来却是空的,最可能的原因是?
- A. 网站禁止访问
- B. 页面由脚本动态渲染,静态源码里没有条目
- C. 网络断开了
- D. 需要重新启动电脑
5对比两个时间点的榜单时,应该以什么为依据对齐同一条话题?
- A. 排名
- B. 热度值原文
- C. 话题名
- D. 榜单类型
6换算热度值时,为什么要保留「热度值原文」这一列?
- A. 让表格看起来更长
- B. 原文是事实来源,换算规则有误时可以回退重算
- C. 方便打乱排序
- D. 为了凑够列数
7微博热搜榜浏览几次后被要求登录,恰当的做法是?
- A. 想办法绕过登录
- B. 借用别人的账号
- C. 只采无需登录即可看到的公开部分,必要时改用百度热搜兜底
- D. 直接放弃整个案例
8采集频率一般建议控制在?
- A. 每分钟一次
- B. 每 10 秒一次
- C. 越频繁越好
- D. 每小时一次左右即可
9两次采集时同一话题被当成了两个不同话题,最可能是?
- A. 话题名里混入了空格或标点差异
- B. 网络太慢
- C. Excel 装错了版本
- D. 电脑内存不足
10关于热搜榜的分析结论,下面哪种说法更专业?
- A. 上榜就等于全社会一致认同
- B. 排名受多种因素影响,结论应说明局限
- C. 热度越高事实越可靠
- D. 榜单可以用来左右舆论