一看就会!用大模型5分钟搞定城市天气爬虫脚本(Linux篇)
前言
我特别喜欢用各种自动化脚本把重复劳动交给机器。最近有个朋友问我:“我是零基础,想在 Linux 上定时抓取某个城市的天气,有没有那种看完就能跑起来的教程?” 我二话不说,立刻打开终端,结合现在大火的大模型,手摸手带他写了一个城市天气爬虫脚本。
你不用懂 Python,也不用学复杂的爬虫框架,只要能敲几条 Linux 命令,跟着操作,5 分钟之后你也可以拥有一个属于自己的天气抓取小工具。更重要的是,我会展示如何利用大模型来写代码,即使你是纯小白,也能体会到“一句话生成脚本”的快乐。
一、准备工作:我们用什么?
要实现“城市天气爬虫”,本质就是:向天气服务发一个请求,把返回结果里的关键信息提取出来,保存到本地文件。
为了最快落地,我选择了:
-
数据源:
wttr.in——一个极其良心的开源天气服务,直接通过 URL 就能拿到格式化的天气文本,零注册、零 API Key。 -
编程方式:Linux Shell 脚本(
.sh),核心命令只用curl和简单的文本处理。 -
辅助工具:任意一款大模型对话工具(如deepseek)。
为什么选择 Shell 而不是 Python?因为对于只取数据、简单落盘的需求,Shell 最简单,没有任何环境依赖,一台默认的 Linux 就能跑。而且大模型生成 Shell 脚本的能力已经非常强,改改就能用。
二、把大模型当成你的专属编程导师
零基础的朋友最担心的就是:“我连命令都不会,怎么写出 curl 那一串参数?”
现在完全不用担心,你只需要学会向大模型“提出一个好问题”。
这里我分享一下我提问的完整思路,这个思路适用于任何你零基础的技术需求:
第①步:告诉它你要干什么
第②步:指定技术栈和限制条件
第③步:提出输出要求与格式样例
第④步:让它解释关键参数
例如,我向大模型发送了下面这段话:
大模型很快就返回了一个带注释的脚本。下面我就基于它生成的内容,做了一点点调整,得到了一个“拿来就能用”的版本。
三、即学即用的天气爬虫脚本
最终脚本 weather_crawler.sh
bash
#!/bin/bash
# 城市设置(支持中文、拼音、英文,比如 Beijing、shanghai、杭州)
CITY="Beijing"
# 输出日志文件
LOG_FILE="weather.log"
# 获取当前时间
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 用 curl 请求 wttr.in,参数解释:
# ?format="%C+%t+%h+%w" 自定义输出:天气状况 + 温度 + 湿度 + 风力
# &m 仅返回公制单位
# &lang=zh 返回中文天气描述(可选)
WEATHER=$(curl -s "wttr.in/${CITY}?format=%C+%t+%h+%w&m&lang=zh")
# 检查 curl 是否成功
if [ $? -ne 0 ] || [ -z "$WEATHER" ]; then
echo "[$TIMESTAMP] ERROR: 无法获取天气数据" >> "$LOG_FILE"
else
# 写入日志:时间戳 + 天气信息
echo "[$TIMESTAMP] ${CITY}: ${WEATHER}" >> "$LOG_FILE"
fi
echo "天气已记录到 $LOG_FILE"
脚本是干嘛的?一看就懂
CITY变量:想查哪个城市就改这里,比如Shanghai、广州、Hangzhou,wttr.in会自动识别。format参数里的%C、%t、%h、%w分别代表天气状况、温度、湿度、风力,你也可以增减,具体占位符列表可以直接在wttr.in/:help里看到。curl -s是静默请求,不输出进度条,只拿数据。- 成功就写一行带时间戳的天气,失败了就写一行错误日志。这点非常关键,以后你把脚本放到定时任务里,看到错误日志你就知道什么时候出过问题。
四、手把手运行与配置
1. 上传脚本到 Linux
把上面代码复制下来,在 Linux 机器上创建文件:
bash
vim weather_crawler.sh
粘贴代码,保存退出。
2. 添加执行权限
bash
chmod +x weather_crawler.sh
3. 手动运行一次
bash
./weather_crawler.sh
如果一切正常,当前目录下会生成 weather.log 文件:
bash
cat weather.log
输出类似:
text
[2026-05-12 15:30:01] Beijing: 晴 +22°C 湿度: 35% 西风2级
4. 配合定时任务,变成自动爬虫
要让它每小时自动抓取一次,就用 crontab:
bash
crontab -e
添加一行:
text
0 * * * * /home/你的用户名/weather_crawler.sh
保存后,系统每到整点就会帮你抓一次天气,所有历史记录都积攒在 weather.log 里,相当于一个自建的气象记录仪。
五、结合大模型的进阶玩法
上面的脚本只是一个毛坯房,但只要你学会了提需求的思路,你可以把它装修得非常豪华。下面是我用大模型继续微调的几组对话示例,给大家一点灵感。
需求 1:只想看温度,其他不要
提问:把上面的脚本改成只记录温度和城市名,格式为“北京: 22°C”
大模型给出的修改就是调整 format 为 ?format=%t&m,然后处理一下输出。你完全不用去翻 wttr.in 的文档。
需求 2:一次抓取多个城市
提问:我想同时记录北京、上海、广州的天气,每次运行把三个城市的天气写在同一行,用逗号分隔。
大模型会帮你改成一个循环,或者拼接多个 curl 请求,并处理好变量。
需求 3:发现乱码怎么办?
提问:我的 Linux 显示中文天气乱码,怎么解决?
模型会告诉你可能是 locale 的问题,让你在脚本前加上 export LANG=zh_CN.UTF-8,或者把数据源的 lang 参数改成英文。
六、避坑指南 & 常见问题
-
防火墙 / 网络问题
如果服务器访问外网受限,curl会报错。可以先用curl -v wttr.in测试一下,看看能否正常连接。 -
输出乱码
如果日志文件中文显示乱码,先确认终端编码是 UTF-8,其次脚本最上面加上export LANG=en_US.UTF-8,再不行就干脆用lang=en返回英文描述。 -
请求频率限制
wttr.in对普通使用很友好,但千万别用while true无限循环秒级请求,那样会被暂时 ban 掉。用sleep控制间隔或定时任务即可。 -
文件路径问题
LOG_FILE="weather.log"使用的是相对路径,脚本在哪个目录执行,日志就生成在哪个目录。定时任务里建议用 绝对路径,避免找不到文件。 -
权限
如果要把日志写到一个固定目录,确保执行脚本的用户有该目录的写权限。
七、总结:会提需求,就能玩转编程
这篇文章的初衷,不是教你成为 Shell 高手,而是让你明白:如今零基础搞定一个实用小工具,最短路径就是“明确需求 + 大模型生成 + 简单验证”。
你甚至可以把这篇文章看作一个模板,以后要写任何爬虫类脚本(比如抓 github trending、抓空气质量指数),就套用这个思路:找一个无需认证的数据源 → 向大模型描述格式和保存方式 → 拿到脚本 → 测试 → 加入 cron。
如果看完有启发,不妨现在就打开终端,跑一次试试。5 分钟后,你就得到了一个属于自己的天气预报小本本。
收藏即学会,跑通即毕业。我们下一个脚本事见!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)