今天你 AI 赋能了吗?打开浏览器,在地址栏输入 xuefulu.ai,按下 Enter 即可访问学府路1号!
2026年10月17日 星期六 12:32:20
常用网址:案例设计 | 案例导航 | 学府路1号 https://xuefulu.ai | 下载 WorkBuddy https://xuefulu.ai/WorkBuddy.html

一、案例背景与采集目标

天气是离日常生活最近的一类公开数据:早上要不要带伞、今天适不适合户外跑、老人要不要减少外出,都靠它。它同时也是最适合练「整月采全」的数据源——页面结构规整,但里面藏着两个机关:页面只给半截数据,剩下半截要走接口;站点还会反过来限你的速。把这两个机关都过了,你就掌握了采集真实站点最核心的两样本事。

本案例的目标站点:天气网 · 历史天气(广州),网址 https://lishi.tianqi.com/guangzhou/202608.html。它的网址规律很好记:城市拼音 + 年月,换一个月份就换一个页面,例如 https://lishi.tianqi.com/guangzhou/202607.html 就是 2026 年 7 月。

1.1 为什么挑这个站点

1.2 这个案例要拿到什么

1.3 这个站点最关键的一个机关

打开任意一个历史月份页面,你会看到一整月的表格——但只有 1 日到 10 日是真数据,11 日以后的表格是空壳,要等你点「查看更多」时才由前端去后台取。也就是说:

你以为的实际上的正确做法
页面 = 整月数据页面只服务端渲染 1~10 日把「页面」和「接口」两份数据取并集
接口只是锦上添花11 日至月末只能从接口拿,页面上根本没有接口是必需品,不是可选项
两段数据接不上11 日附近两段有重叠按日期去重,页面优先

所以本案例的采集逻辑是:先用页面把前十天与统计卡拿到,再用接口把 11 日到月末补齐,最后按日期合并去重。这也解释了一个新手常犯的错误——「我明明看到整月都在,为什么采下来只有十天」。

1.4 这个案例的难点在哪

难点具体表现对策
页面只给十天服务端只渲染 1~10 日,其余靠前端异步加载页面 + 接口取并集,接口路径 /monthdata/{城市}/{年月}
接口要加密参数接口要求 POST 一个加密字段,明文是「城市_时间戳」按站点自身脚本里的算法生成,密钥与算法见第二节
站点会限流连续约 2 次页面请求就被重定向到 404 页;限流时还会返回「200 + 一个约 700 字节的假 404 页面」有效性判定必须看内容(页面 ≥20KB、接口是合法 JSON),不能只看状态码
只能等,不能硬闯换 UA、换路径都无效断点续跑 + 自适应节流:命中限流就成倍拉长间隔,冷却后自动接着跑
空气质量只有近些年才有早期月份的空气质量指数是空的,站点用 0 占位标成缺失(留空),不要当成 0 参与计算
天气数据只作学习分析之用。不要把采集结果包装成「气象服务」对外发布,也不要标注成官方结论——预报有官方发布渠道,我们只是课堂演示如何取公开信息。

目标站点与交付产物

下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。

项目内容
示范站点天气网 · 历史天气(广州)
https://lishi.tianqi.com/guangzhou/202608.html
网址规律=城市拼音+年月;页面只服务端渲染每月 1~10 日,其余必须走 /monthdata 接口补齐;站点限流严格,页面连续约 2 次请求即被重定向到 404 页
延伸站点
  • 中国天气网 · 广州天气预报 http://www.weather.com.cn/weather/101280101.shtml(官方预报,静态页)
  • 生态环境部 · 城市空气质量实时发布 https://air.cnemc.cn:18007/(入口:首页地图点选城市,或按城市名查询逐时 AQI 与 PM2.5)
  • 和风天气 · 开发文档(API) https://dev.qweather.com/docs/api/(注册后可用的合规 API)
交付产物
  • 数据明细.xlsx(逐日明细 + 月度统计卡两个部分,含字段字典与质量校验 Sheet)
  • 数据明细.html(按年月筛选、可按气温排序)
  • 数据看板.html(气温走势 + AQI 日历 + 月度对比)
  • 气温走势图(逐月 PNG + 可筛选图库页 + 汇编 PDF,可直接打印)
  • 技能压缩包(双通道采集 + 断点续跑 + 质量自校验)
难度★★★ 高
合规提示站点有明确限流,采集必须低频、断点续跑;数据版权归原站,仅限学习研究,不得商业分发。

二、数据源与字段设计

这个站点有两套结构相同的通道:PC 端与移动端。数据字段完全一样,区别只在于路径与限流强度——这正是我们能在 PC 端被限流时用移动端兜底的原因。

通道地址形态提供什么限流情况
PC 页面https://lishi.tianqi.com/{城市}/{年月}.html月度统计卡 + 每月 1~10 日明细严格
PC 接口POST https://lishi.tianqi.com/monthdata/{城市}/{年月}11 日至月末明细(含 AQI、PM2.5)较严
移动页面https://m.tianqi.com/lishi/guangzhou/202608.html同 PC,结构同构宽松
移动接口POST https://m.tianqi.com/lishi/monthdata/{城市}/{年月}同 PC 接口宽松

2.1 逐日明细字段(14 个)

字段名字段含义示例值口径与备注
日期记录对应的日期2026-08-15统一成 YYYY-MM-DD
年月由日期派生的月份键2026-08做月度透视表用
星期中文星期周六由日期派生
城市中文城市名广州多城市采集时的区分主键
天气现象站点原始天气描述中雨照录原文,不要改写
天气类型归并后的主要天气中雨把「多云转阴」「阴转多云」归成同一类,便于统计
最高温当天最高气温33纯数字,单位统一为摄氏度
最低温当天最低气温27纯数字
温差最高温 − 最低温6由前两列派生
风向风向原文西南风如为「无持续风向」照录
风力风力等级原文2 级保留原文口径,不擅自换算
空气质量指数AQI 数值252017 年 11 月之前为空,缺失要留空不是 0
PM2.5细颗粒物浓度17与 AQI 同时段才有值
数据来源通道这条记录来自哪条通道pc / wap双源采集时用于追溯与交叉校验

2.2 月度统计卡字段(站点自己算好的结论)

字段名字段含义示例值口径与备注
平均高温当月平均最高气温32站点统计卡上的值
平均低温当月平均最低气温27站点统计卡上的值
极端高温当月出现的最高气温38站点统计卡上的值
极端低温当月出现的最低气温25站点统计卡上的值
平均AQI当月平均空气质量指数25早期月份为空
缺失天数该月未采到的天数0老月份站点本身可能缺日,如实记录

2.3 三个必须写死的口径

统计卡是站点替你算好的「标准答案」。采回来之后,用逐日明细自己重算一遍再去比对,就能验证数据采集得对不对——这是本案例最值得学的一招:用站点自己的结论校验自己的采集。

AI 助手小贴士|如果页面上的字段你分不清该归到哪一列,可以让 AI 先把原始文本原样列出来,你再来定拆列规则。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请把这个天气页面上所有能看到的文字原样列出来,先不要做任何拆分或改写,我来决定怎么分列。

课程思政|工匠精神与严谨求实 · 一个小数点,一条错误结论

温度拆列、缺失留空、来源标注,这些动作看着琐碎,却决定了后面能不能正确计算。把空值当成 0,算出来的平均气温就会出错;不留来源列,出了问题就查不出来是哪条通道的锅。结论的可靠性,永远建立在这些不起眼的单元格上。

三、零代码操作步骤

工具与技能|先看清三个角色,再动手

本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。

角色负责什么在本案例里具体做什么
你确认字段清单、验收结果、清洗与合规把关盯字段清单、核对结果、处理异常(如验证码)
WorkBuddy接中文指令:探字段 → 批量采 → 清洗 → 导出交付物拆解本篇的采集任务并跑完全量、产出交付物
浏览器技能
BrowserSkill
以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理打开历史天气页,确认页面上只有 1~10 日、其余要靠站内接口补齐

五步操作主线(全课程统一,每一篇都按这个顺序推进):

  1. 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
  2. 现场踩点(浏览器技能 BrowserSkill):打开 https://lishi.tianqi.com/guangzhou/202608.html,确认逐日明细(含最高温、最低温、风向风力、AQI)与月度统计卡的位置。
  3. 小样试采(WorkBuddy):先只采 2026 年 8 月 一个月,把逐日明细和月度统计卡都拿出来。
  4. 核对与清洗:① 这个月是不是整月齐(只到 10 日说明只采了页面、没走接口);② 空气质量列的范围对不对;③ 统计卡的四项数值有没有单独存下来。
  5. 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
起手一句话(可直接复制):用浏览器技能 BrowserSkill 打开 https://lishi.tianqi.com/guangzhou/202608.html(天气网 · 历史天气(广州)),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。

下面是在 WorkBuddy 里完成本案例的完整流程。全程不需要你写一行代码,但每一步都要动手核对。

  1. 新建对话,粘贴下一节的「采集提示词」,网址用 https://lishi.tianqi.com/guangzhou/202608.html。
  2. 先只采一个月。说「先只采 2026 年 8 月,把逐日明细和月度统计卡都给我看」。
  3. 核对三件事。① 这个月是不是整月都齐(不是只有 10 天);② 空气质量列的范围对不对;③ 统计卡的四项数值有没有单独存下来。
  4. 验证「页面 + 接口」是不是都走到了。如果只有 1 到 10 日,说明只采了页面,要明确要求「11 日到月末请从站内接口补齐」。
  5. 再采一整年。说「按同样规则采 2025 年全年 12 个月,注意控制频率,被限流就等一会儿再继续,已经采好的不要重复采」。
  6. 放开全量。确认一年没问题后,说「继续采 2011 年 1 月到 2026 年 9 月的其余月份,凑成 2011 年 1 月至今的完整序列」。这一步会被限流拖得比较久,让它在后台跑。
  7. 生成三件套。说「把数据整理成:数据明细 Excel、可检索的明细网页、带图表的数据看板,看板里的高温用红、低温用蓝」。
  8. 做交叉校验。说「用逐日明细重算每个月的平均高温、平均低温、极端高低温,和统计卡比对,把不一致的月份单独列出来」。
  9. 顺手把气温走势图也导出。说「把每个月的走势图导出成图片,并做一个可按年份筛选的图库页」。
多月份采集和多月天气采集最容易出的问题是「串月」——把 7 月的数据贴到了 8 月那几行。所以合并后一定要抽查几行,核对日期和月份对不对得上。

四、提示词模板与追问技巧

下面这段可以直接复制。注意三件事:把「页面 + 接口」写死、把缺失值口径写死、先小后大分批来。

提示词
请帮我采集天气网的历史天气数据,城市广州。

【目标站点】https://lishi.tianqi.com/guangzhou/202608.html
  网址规律是 城市拼音 + 年月,例如 202607 就是 2026 年 7 月。
  注意:页面服务端只渲染每月 1~10 日的明细,11 日到月末必须从站内接口补齐
  (POST https://lishi.tianqi.com/monthdata/guangzhou/{年月})。
  移动端 m.tianqi.com 结构同构,PC 端被限流时可以切过去。

【采集范围】先只采 2026 年 8 月给我验证,我确认后再采全量。

【需要字段】
  一、逐日明细(每天一行)
    1. 日期(统一成 2026-08-15 格式)
    2. 年月 / 星期
    3. 城市
    4. 天气现象(照录原文)
    5. 最高温、最低温(只要数字,不要「℃」)
    6. 风向(如 东南风)
    7. 风力(如 2 级)
    8. 空气质量指数 AQI、PM2.5(没有就留空)
    9. 数据来源通道(pc / wap)
  二、月度统计卡(每月一行)
    10. 平均高温、平均低温、极端高温、极端低温、平均AQI、缺失天数

【执行要求】
  - 必须把「页面 1~10 日」和「接口 11 日到月末」取并集,按日期去重
  - 空气质量缺失要留空,不要把站点上的占位 0 当成真实值
  - 支持断点续跑:已采好的月份自动跳过,中断后重跑同一条命令能接着采
  - 控制频率,被限流就等一会儿再继续,不要提高频率硬闯
  - 有效性要按内容判断:页面要有正常正文,接口要能解析出 JSON,
    不要只看状态码是不是 200
  - 输出 Excel,文件名 guangzhou_weather.xlsx

4.1 三条常用追问指令

追问指令
追问一(只有十天):
  采回来每个月只有 1 到 10 日,后半月的明细丢了。
  请从站内接口 /monthdata 把 11 日到月末补齐,并和页面数据按日期合并去重。

追问二(缺失值被当成 0):
  早期月份的平均空气质量是 0,这是站点的占位符,不是真实值。
  请把这类 0 判为缺失、留空,并在质量说明里写清楚从哪个月份开始才有空气质量数据。

追问三(交叉校验):
  请用逐日明细重算每个月的平均高温、平均低温、极端高温、极端低温,
  与站点统计卡逐月比对,把差值超过 2 摄氏度的月份单独列出来,并说明可能的原因。
不要贪多,一次一个月、一年一批。把 2026 年 8 月做对了,全年就是复制同一套规则;反过来一上来就采十几年,一旦字段口径有问题,全部都要重来。

AI 助手小贴士|批量任务里,让 AI 先报一张「采集进度表」(哪些月份已完成、哪些缺失)再补采,比盲目重跑整个任务高效得多。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先给我一张采集进度表:哪些月份已经采到、哪些月份缺失或有问题,我据此决定补采哪些。

五、结果核对、清洗与保存

采集到的逐日明细样例(示例数据,字段形态与真实一致):

日期星期天气现象最高温最低温风向风力AQIPM2.5来源
2026-08-15周六中雨3327西南风2 级2517pc
2026-08-16周日中雨3528西北风2 级3514pc
2026-08-17周一中雨3329西南风2 级2212pc
2026-08-18周二中雨3327东北风2 级2314pc
2026-08-19周三小雨3528东风3 级3016wap

5.1 六步清洗,一句话一条

清洗指令
① 去单位:
   把最高温、最低温里的「℃」去掉,只保留数字。

② 统一日期:
   把日期统一成 YYYY-MM-DD,并按日期正序排列;派生「年月」「星期」两列。

③ 缺失归一:
   把 AQI 与 PM2.5 的占位值 0 判为缺失、置空,并统计每个月缺失的天数。

④ 新增温差列:
   新增「温差」= 最高温 − 最低温。

⑤ 交叉校验:
   用逐日明细重算每月的平均高低温、极端高低温,与统计卡比对,
   差值 ≤2 摄氏度视为一致;不一致的月份单列出来并说明原因。

⑥ 输出交付:
   先给我 Excel 数据明细,再生成可检索明细网页和数据看板。

5.2 这套流程最后交付哪些东西

交付物内容用途
数据明细.xlsx8 个 Sheet:说明 / 每日明细 / 月度汇总 / 年度汇总 / 月气候态 / 字段字典 / 质量校验 / 采集问题拿去做二次分析的底表
数据明细.html可筛选、可排序、可分页、可导出的单页随手查某一天广州的天气
数据看板.html逐年气温走势、12 个月气候态、年月热力图、空气质量走势、极端气温排行等图表一眼看清广州这些年的冷暖与空气质量变化
气温走势图每月一张走势图(时间范围内每个月一张),外加一个可按年份筛选的图库页与一份汇编 PDF与站点原生图表一致,可直接用于报告
技能压缩包把本案例的采集与生成流程打包成可复用技能换个城市改个拼音就能再跑一遍
把「温差」算出来,南北城市的差别就一目了然:北方内陆昼夜温差常有十几度,广州往往只有五六度。清洗的终点,是让数据能直接回答一个问题。

AI 助手小贴士|核对多月数据时,最省力的办法是让它做一次「分组计数」:每个月应有几天、实际几天,一眼就看出来哪里缺了。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请按月份分组统计记录条数,告诉我每个月应该有几天、实际采到几天、缺了哪几天。

课程思政|数据安全与法治素养 · 取之有道,用之有度

天气与空气质量是公开信息,但公开不等于可以随意滥用。控制请求频率、不加压对方服务器、不把他人整理的数据包装成自己的成果,是最基本的规矩。数据工作者的专业,既体现在会取,也体现在知道什么时候该停下来。

六、常见问题与合规红线

6.1 这个站点上最容易踩的五个坑

现象原因怎么处理
每个月只采到 10 天页面服务端只渲染 1~10 日从站内接口补齐 11 日至月末,再按日期合并
整月数据看着齐全,实际缺日老月份站点本身就没有回补全部日期用「缺失天数」如实记录,分析时注意样本量
早期月份的平均空气质量是 0那是占位值,不是真实值判为缺失、留空,并说明从哪个月份起才有数据
采集到一半突然全是 404站点限流了,返回的是伪装成正常响应的假 404 页停下来冷却,降低频率后从断点接着跑;有效性要按内容判断而不是状态码
统计卡和逐日重算的均值差了一度多2014 年及以前的部分月份,站点统计卡与其接口逐日值本身就有口径差把比对阈值放到 2 摄氏度,并把这类差异写进质量报告,不要当成采集错误

6.2 三条合规红线

  1. 只采公开信息。历史天气、空气质量属公开发布信息,可以采;但不要试图获取需要登录或付费的内容。
  2. 控制频率。这个站点的限流很敏感,本案例要求低频、支持断点续跑、命中限流就退避等待,不去想办法绕过。
  3. 不冒充官方。采集结果只作课堂分析,不得包装成气象服务对外发布,也不得声称是官方数据。
遇到页面明确声明禁止抓取或要求验证码时,停下来换数据源。本课要的不是「攻破」,而是「合规地拿到能用的数据」。

课程思政|诚信与职业操守 · 数据可以采,结论不能编

天气数据里最忌讳的一件事,是「缺了就编一个填上」——某天没采到就随手写个平均值,空气质量缺失就用相邻日期顶替。编造出来的数据比空值危险得多,因为它会让人做出错误的判断。诚实地留下空白、记录缺失原因,是数据工作者最硬的底线。

七、随堂自测(10 题)

点击选项即可判分,答错的题会立刻显示解析。

已答 0 / 10 · 正确 0 —

1天气网历史天气页面上,服务端真正渲染出来的逐日明细是?

  • A. 只有每月 1 到 10 日
  • B. 整月每一天
  • C. 只有统计卡没有明细
  • D. 只有最近七天
答案:A。页面只服务端渲染 1~10 日,11 日到月末必须从站内接口补齐,两份取并集才是整月。

2采回来每个月只有 10 天,最正确的处理是?

  • A. 接受现状,10 天也够用
  • B. 从站内接口补齐 11 日至月末,并按日期合并去重
  • C. 把缺少的天数用平均值补上
  • D. 换个网站重新采
答案:B。页面 + 接口取并集是本案例的核心方法;用平均值补数属于编造数据。

3站点对高频请求返回「200 + 一个约 700 字节的页面」,说明什么?

  • A. 这个月份确实没有数据
  • B. 页面很简洁
  • C. 被限流了,返回的是伪装成正常响应的错误页
  • D. 需要换个浏览器
答案:C。这是典型的假 404。有效性必须按内容判断:页面要够大、不含错误字样,接口要能解析出 JSON。

4早期月份的平均空气质量显示为 0,正确的处理是?

  • A. 判为缺失并留空,同时说明从哪个月份起才有数据
  • B. 照原样记 0
  • C. 把整列删掉
  • D. 用相邻月份的值顶替
答案:A。那是站点的占位符。把假 0 当真实值,会把历史平均空气质量算得严重偏低。

5为什么要保留「数据来源通道」这一列?

  • A. 为了好看
  • B. 双源采集时用于追溯记录来自哪条通道,便于交叉校验与排查
  • C. 为了增加字段数量
  • D. 没有实际用处
答案:B。留下来源列,才能做两源一致性校验,也才能在出问题时定位是哪条通道错了。

6用逐日明细重算的月均值与站点统计卡差了一点几度,最合理的判断是?

  • A. 一定是我们的采集错了
  • B. 直接把重算结果改成统计卡的值
  • C. 统计卡与接口本身存在口径差,应把阈值放宽并在报告中说明
  • D. 删掉这个月份
答案:C。实测 2014 年及以前的部分月份,站点统计卡与其接口逐日值本身就差 1 到 2 度,属上游口径差异。

7面对这个站点的限流,下面哪种做法是正确的?

  • A. 降低频率、断点续跑,被限流就退避等待
  • B. 提高并发把剩下的抢完
  • C. 换用户代理或换路径绕过去
  • D. 放弃这个站点
答案:A。限流只能等不能闯。本地自适应节流加断点续跑,才能无人值守把数据跑完。

8清洗时新增「温差」列,正确的算法是?

  • A. 最高温 + 最低温
  • B. 最高温 − 最低温
  • C. 最高温 × 最低温
  • D. 最高温 ÷ 最低温
答案:B。温差是当天最高温减最低温,是最常见的天气分析指标之一。

9采集多月数据时,为了日后能追溯,最好的做法是?

  • A. 只保存最终的汇总表
  • B. 只在对话里看一眼
  • C. 把所有月份覆盖成一份
  • D. 保存原始明细、清洗版本和采集日志三样
答案:D。原始明细是唯一事实来源,清洗版本便于使用,日志记录过程,三者缺一不可。

10下面哪种做法违反了本课对天气数据使用的要求?

  • A. 课堂上做南北温差对比
  • B. 统计某年气温走势并画图
  • C. 把结果存到自己的作业文件夹
  • D. 把采集结果包装成「官方气象服务」对外发布
答案:D。采集结果只能用于课堂分析,不得冒充官方发布或对外提供服务。