如何写一个天气查询脚本

wen 实用脚本 1

本文目录导读:

如何写一个天气查询脚本

  1. 📚 目录导读
  2. 为什么你需要一个天气查询脚本?
  3. 准备工作:选择数据源与注册API密钥
  4. 核心代码:用requests库发起HTTP请求
  5. 解析JSON数据:提取温度、湿度与天气状况
  6. 进阶优化:命令行参数、缓存与错误处理
  7. 实战问答:解决常见报错与逻辑陷阱
  8. 部署建议:将脚本变为全局命令
  9. 结语与SEO优化要点

手把手教你用Python写一个天气查询脚本:从API调用到命令行工具**


📚 目录导读

  1. 为什么你需要一个天气查询脚本?
  2. 准备工作:选择数据源与注册API密钥
  3. 核心代码:用requests库发起HTTP请求
  4. 解析JSON数据:提取温度、湿度与天气状况
  5. 进阶优化:命令行参数、缓存与错误处理
  6. 实战问答:解决常见报错与逻辑陷阱
  7. 部署建议:将脚本变为全局命令

为什么你需要一个天气查询脚本?

在日常开发或生活中,手动打开浏览器查询天气效率低下,一个命令行脚本能让你直接通过终端输入weather 北京 快速获取实时天气,方便集成到定时任务(如每日推送)或自动化工作流中,更重要的是,这个案例涵盖了API交互、JSON解析、异常处理等Python核心技能,是学习爬虫与数据处理的绝佳起点。

准备工作:选择数据源与注册API密钥

目前主流的免费天气API包括:

  • OpenWeatherMap(全球覆盖,免费版每分钟60次调用)
  • 和风天气(国内访问速度快,需实名认证)
  • WeatherAPI(无需信用卡,注册即送免费额度)

以OpenWeatherMap为例(适合全球用户),操作步骤:

  1. 访问官网注册账号,进入API Keys页面生成密钥。
  2. 记住你的API_KEY,并确认免费订阅(Free tier)已激活。

核心代码:用requests库发起HTTP请求

首先安装依赖:

pip install requests

编写基础脚本:

import requests
def get_weather(city):
    api_key = "你的API_KEY"
    url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
    response = requests.get(url)
    return response.json()

关键点units=metric参数将温度转为摄氏度,否则返回开尔文温度。

解析JSON数据:提取温度、湿度与天气状况

API返回的JSON结构复杂,我们需要提取关键字段:

def parse_weather(data):
    if data.get("cod") != 200:
        return f"错误: {data.get('message', '未知错误')}"
    main = data["main"]
    weather = data["weather"][0]
    return f"{data['name']}天气: {weather['description']}, " \
           f"温度{main['temp']}°C, 湿度{main['humidity']}%"

逻辑解析cod字段表示HTTP状态码,200为成功;weather是列表,取第一个元素获取描述。

进阶优化:命令行参数、缓存与错误处理

1 命令行输入支持

使用sys.argv接收参数:

import sys
if __name__ == "__main__":
    city = sys.argv[1] if len(sys.argv) > 1 else "Beijing"
    data = get_weather(city)
    print(parse_weather(data))

2 增加缓存与超时

避免频繁请求被封,加入cachetools(需安装):

from cachetools import cached, TTLCache
cache = TTLCache(maxsize=10, ttl=600)  # 10分钟缓存
@cached(cache)
def get_weather_cached(city):
    return get_weather(city)

3 网络超时处理

requests.get()中添加timeout=5,并用try-except捕获requests.RequestException

实战问答:解决常见报错与逻辑陷阱

Q1:遇到401 Unauthorized怎么办?
检查API_KEY是否正确,且账号已激活,OpenWeatherMap新用户需等待约2小时密钥生效。
Q2:城市名包含空格(如“New York”)如何处理?
使用urllib.parse.quote进行URL编码,或直接替换空格为%20
Q3:如何处理非英语城市名(如“重庆”)?
在URL中添加&lang=zh_cn参数,可将描述转为中文。
Q4:脚本返回“city not found”但城市存在?
确认城市拼写,或使用城市的行政区划ID(q=city,country格式,例如q=London,uk)。

部署建议:将脚本变为全局命令

在Linux/macOS中,将脚本保存为weather.py,添加执行权限并软链接:

chmod +x weather.py
ln -s /path/to/weather.py /usr/local/bin/weather

你可以在任意终端直接运行weather 上海
Windows用户可使用pyinstaller打包成exe文件,或添加环境变量路径。


结语与SEO优化要点

本文通过完整的代码示例步骤拆解,帮助读者从零构建天气查询工具,为了提升搜索引擎排名,请重点关注以下关键词布局:中包含“天气查询脚本”和“Python”自然融入“API调用”“命令行”等长尾词

  • 利用H2/H3标签划分层级,便于爬虫抓取
  • 提供实操代码FAQ,增加页面停留时长

创作建议:结合自身开发经历,在评论区分享你使用不同API的踩坑经验,能显著提升互动率,如果你希望查询未来天气预报,可进一步研究forecast接口,原理与当前演示完全一致,只是URL路径不同,动手试试你的第一个自动化工具吧!

抱歉,评论功能暂时关闭!