根据上一期的文章,可能有人就会在心里思考:“脚本跑通了,看着 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 字符在终端画出柱状对比图。”几分钟后,你的小黑窗就被大模型激活成了气象分析仪表盘!

四、总结:从“爬虫脚本”到“个人生活气象站”的蜕变

回顾一下,在这篇续集中,我们仅仅通过几段流畅的大模型对话,就完成了三个量级的重大升级:

  1. 从“数值罗列”到“物理预警” :原本冷冰冰的 35 度变成了“高温预警防中暑”的关怀。
  2. 从“沉默服务器”到“微信弹窗” :无论你是在通勤还是在开会,被动获取数据变成了主动推送服务。
  3. 从“单调字符”到“可视化图表” :给硬盘里的死数据注入了直观的生命力。

这就是现代编程的真正魅力——工具、数据、大模型的三体运动。很多小白觉得“自动化”很遥远,但从你决定把重复的工作外包给脚本,把学习成本外包给大模型开始,你就已经是一名拥抱未来的“超级个体”了。

还等什么?现在立刻打开终端,翻出你上一期跑通的 weather_crawler.sh,复制上面我的提示词去发问吧!5 分钟后,当你的手机收到第一条来自自己脚本的微信天气预报预警时,记得回来点个赞。我们下个脚本再见!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐