前言

我特别喜欢用各种自动化脚本把重复劳动交给机器。最近有个朋友问我:“我是零基础,想在 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广州Hangzhouwttr.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 参数改成英文。

六、避坑指南 & 常见问题

  1. 防火墙 / 网络问题
    如果服务器访问外网受限,curl 会报错。可以先用 curl -v wttr.in 测试一下,看看能否正常连接。

  2. 输出乱码
    如果日志文件中文显示乱码,先确认终端编码是 UTF-8,其次脚本最上面加上 export LANG=en_US.UTF-8,再不行就干脆用 lang=en 返回英文描述。

  3. 请求频率限制
    wttr.in 对普通使用很友好,但千万别用 while true 无限循环秒级请求,那样会被暂时 ban 掉。用 sleep 控制间隔或定时任务即可。

  4. 文件路径问题
    LOG_FILE="weather.log" 使用的是相对路径,脚本在哪个目录执行,日志就生成在哪个目录。定时任务里建议用 绝对路径,避免找不到文件。

  5. 权限
    如果要把日志写到一个固定目录,确保执行脚本的用户有该目录的写权限。


七、总结:会提需求,就能玩转编程

这篇文章的初衷,不是教你成为 Shell 高手,而是让你明白:如今零基础搞定一个实用小工具,最短路径就是“明确需求 + 大模型生成 + 简单验证”

你甚至可以把这篇文章看作一个模板,以后要写任何爬虫类脚本(比如抓 github trending、抓空气质量指数),就套用这个思路:找一个无需认证的数据源 → 向大模型描述格式和保存方式 → 拿到脚本 → 测试 → 加入 cron。

如果看完有启发,不妨现在就打开终端,跑一次试试。5 分钟后,你就得到了一个属于自己的天气预报小本本。


收藏即学会,跑通即毕业。我们下一个脚本事见!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐