天气特工进阶篇:从单纯记录到智能预警与可视化
请帮我修改脚本,增加如下逻辑:如果温度高于 35 度提示‘高温预警,注意防暑降温’,如果湿度大于 80% 且温度大于 28 度提示‘闷热潮湿,注意防暑’,如果风力大于 5 级提示‘大风预警,出行注意安全’,如果温度低于 5 度提示‘寒潮预警,穿厚点’。你完全没有去啃 Shell 编程书籍,就靠着“告诉大模型你要干什么”,直接把一个“数据的记录员”升级成了“生活的提醒小秘书”。很多小白觉得“自动化”
根据上一期的文章,可能有人就会在心里思考:“脚本跑通了,看着 weather.log 里攒了上百条的冷冰冰的温度湿度数据,怎么让这些数据变得更有价值?”
说得好!今天的计算机技术输出核心理念就是:我们不止要把数据存下来,还要把数据“活用”起来,甚至让数据“反向推送”我们。
这就是《一看就会!用大模型5分钟搞定城市天气爬虫脚本》的续集——“天气特工进阶篇:从单纯记录到智能预警与可视化” 。你依然不用成为编程大神,我们继续靠“大模型提需求”大法,给我们的脚本装上最酷的“智能大脑”。
一、进阶诊断:把单纯记录升级为“物理意义”分析
在原来的脚本(以后我们就亲切地称它为“毛坯房 V1.0”吧)里,我们只是把原始返回内容%C+%t+%h+%w硬生生写进了日志。虽然有了温度、湿度、风力,但这些数字是死板的,比如“22°C”到底算冷算热并不直观,你也很难分析最近到底处于什么季节。
这时候该怎么办?我们继续打开 DeepSeek,直接把 V1.0 的代码上下文喂给大模型,然后像跟工程师聊天一样提需求。
你需要向大模型发出的进阶指令示例:
“这是我现在在用的天气抓取 Linux Shell 脚本(
weather_crawler.sh)。我不想只记录原始抓取数据,我想提取出体感建议。请帮我修改脚本,增加如下逻辑:如果温度高于 35 度提示‘高温预警,注意防暑降温’,如果湿度大于 80% 且温度大于 28 度提示‘闷热潮湿,注意防暑’,如果风力大于 5 级提示‘大风预警,出行注意安全’,如果温度低于 5 度提示‘寒潮预警,穿厚点’。仍然需要保留原来的基础温度和湿度数据,但要在日志里加上这个‘温馨提示’字段。”
你看,你不需要亲自去写复杂的 if 判断嵌套,大模型在几秒钟内就会帮你把 V1.0 的脚本“进化”到 V2.0。
大模型可能会给出的 V2.0 示意代码:
#!/bin/bash
export LANG=zh_CN.UTF-8
CITY="Shanghai"
LOG_FILE="/home/yourname/weather_advanced.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 获取原始数据(用制表符或特定分隔符方便后续处理)
WEATHER_DATA=$(curl -s "wttr.in/${CITY}?format=%C\t%t\t%h\t%w&m&lang=zh")
if [ $? -ne 0 ] || [ -z "$WEATHER_DATA" ]; then
echo "[$TIMESTAMP] ERROR: 无法获取天气数据" >> "$LOG_FILE"
exit 1
fi
# 提取具体数值(这里用 awk 精准分割)
COND=$(echo "$WEATHER_DATA" | awk -F'\t' '{print $1}')
TEMP_STR=$(echo "$WEATHER_DATA" | awk -F'\t' '{print $2}')
HUM_STR=$(echo "$WEATHER_DATA" | awk -F'\t' '{print $3}')
WIND_STR=$(echo "$WEATHER_DATA" | awk -F'\t' '{print $4}')
TEMP_VAL=$(echo "$TEMP_STR" | grep -oP '\d+')
HUM_VAL=$(echo "$HUM_STR" | grep -oP '\d+')
WIND_VAL=$(echo "$WIND_STR" | grep -oP '\d+')
# 初始化温馨提示
TIPS=""
# 大模型帮我们生成的逻辑判断
if [ "$TEMP_VAL" -ge 35 ]; then
TIPS="高温预警,注意防暑降温"
elif [ "$TEMP_VAL" -le 5 ]; then
TIPS="寒潮预警,穿厚点,预防感冒"
fi
if [ "$HUM_VAL" -ge 80 ] && [ "$TEMP_VAL" -ge 28 ]; then
TIPS="$TIPS;闷热潮湿,注意防暑"
fi
if [ "$WIND_VAL" -ge 5 ]; then
TIPS="$TIPS;大风预警,出行注意安全"
fi
if [ -z "$TIPS" ]; then
TIPS="当前天气舒适,尽情享受吧!"
fi
echo "[$TIMESTAMP] ${CITY}: ${WEATHER_DATA} | 温馨提示:${TIPS}" >> "$LOG_FILE"
看到了吗?你完全没有去啃 Shell 编程书籍,就靠着“告诉大模型你要干什么”,直接把一个“数据的记录员”升级成了“生活的提醒小秘书”。
二、打通最后的距离:主动推送到微信/钉钉
但如果只是把预警写在 Linux 本地日志里,这也太不“互联网”了。我们不可能每分钟都登服务器 cat 日志。真正的痛点是什么?在我们去上班的路上,脚本能不能主动告诉我们:“老板,今天大概率下暴雨,记得带伞”?
这就不得不提消息推送界的“神器”——PushPlus(推送加)。它能让你通过极简的 HTTP 请求,把消息直接弹到你的个人微信上,完全不需要去申请复杂的企业号。
第一步,让大模型帮你写出 PushPlus 推送函数
向大模型发送指令:
“我有一个 Linux 脚本需要向微信推送消息。请帮我用 Shell 脚本写一个 PushPlus 的通用推送函数,要求获取 PushPlus Token,且支持把自定义的消息标题和内容发送到微信。顺便教我这个 Token 去哪里找。”
大模型会立刻生成一个标准的推送函数库,你只需花 30 秒去 PushPlus 官网复制一个 Token 即可。
第二步,缝合进我们的天气脚本
把刚才的大风、高温预警作为推送内容,让脚本在记录日志的同时,调起微信的小喇叭。
当你要求大模型修改 V2.0 脚本加入推送逻辑时,它可能会给出如下 V3.0 关键片段:
#!/bin/bash
# ...(前面抓取与判断的代码保持不变)...
# 引入 PushPlus 推送函数
source /opt/scripts/pushplus_helper.sh
# 当存在恶劣天气提示时的逻辑
if [[ "$TIPS" == *"预警"* ]]; then
PUSH_TITLE="⚠️ 坏天气预警 - ${CITY}"
PUSH_CONTENT="当前气温:${TEMP_STR}\n湿度:${HUM_STR}\n风力:${WIND_STR}\n提醒:${TIPS}"
# 调用大模型帮我们写的函数发到微信
push_to_wechat "$PUSH_TITLE" "$PUSH_CONTENT"
echo "[$TIMESTAMP] ALERT: 恶劣天气已推送到微信" >> "$LOG_FILE"
else
# 即使是好天气,也可以每天早晨8点温柔提示一下(后面定时任务里设)
echo "[$TIMESTAMP] INFO: 天气舒适,未触发预警推送" >> "$LOG_FILE"
fi
定时任务建议(crontab -e):
text
# 每天早上 7:30 定时推送天气日报到微信
30 7 * * * /home/yourname/weather_advanced_v3.sh
大模型不仅帮你写了复杂的 JSON 拼接和网络请求,还把 @all 提醒、内容格式的雷区都给避开了。
从此以后,每天早上你拿起手机,微信就会收到一条专属“天气小管家”发来的贴身提示,科技感与人文感双双拉满。
三、数据可视化的魅力:让枯燥数字在终端“跳舞”
如果你觉得看日志里的纯文本还不够过瘾,我教你一个甚至能让同事觉得你是“极客大神”的招数——命令行可视化。
之前存了几百条的温度记录,怎么显示成气温曲线呢?大模型可以教你在脚本里用一个叫做 gnuplot 的工具,把气温、湿度、风力等历史数据转换成直观的图表。
你甚至可以教大模型解析 wttr.in 的天气预报数据(比如一次性获取未来三天的数据),然后在终端画出一个纯字符组成的温度趋势柱状图,效果如下:
text
北京未来三天温度趋势 (ASCII 柱状图)
35 ┤
30 ┤ ██
25 ┤ ██ ██ ██
20 ┤ ██ ██ ██
15 ┤ ██ ██ ██ ██
10 ┤ ██ ██ ██ ██
5 ┤ ██ ██ ██ ██
0 ┤ ██ ██ ██ ██
├─────────────┼─────────────┼─────────────┤
10月2日 10月3日 10月4日
你只需要跟大模型说:“写个 Shell 脚本,利用 wttr.in 获取未来 3 天北京的最高温度和最低温度,然后用纯 ASCII 字符在终端画出柱状对比图。”几分钟后,你的小黑窗就被大模型激活成了气象分析仪表盘!
四、总结:从“爬虫脚本”到“个人生活气象站”的蜕变
回顾一下,在这篇续集中,我们仅仅通过几段流畅的大模型对话,就完成了三个量级的重大升级:
- 从“数值罗列”到“物理预警” :原本冷冰冰的 35 度变成了“高温预警防中暑”的关怀。
- 从“沉默服务器”到“微信弹窗” :无论你是在通勤还是在开会,被动获取数据变成了主动推送服务。
- 从“单调字符”到“可视化图表” :给硬盘里的死数据注入了直观的生命力。
这就是现代编程的真正魅力——工具、数据、大模型的三体运动。很多小白觉得“自动化”很遥远,但从你决定把重复的工作外包给脚本,把学习成本外包给大模型开始,你就已经是一名拥抱未来的“超级个体”了。
还等什么?现在立刻打开终端,翻出你上一期跑通的 weather_crawler.sh,复制上面我的提示词去发问吧!5 分钟后,当你的手机收到第一条来自自己脚本的微信天气预报预警时,记得回来点个赞。我们下个脚本再见!
更多推荐


所有评论(0)