当前位置:首页>python>【小沐学Python】让你的应用"知晴知雨":手把手教你接入实时天气数据API

【小沐学Python】让你的应用"知晴知雨":手把手教你接入实时天气数据API

  • 2026-09-08 18:06:12
【小沐学Python】让你的应用"知晴知雨":手把手教你接入实时天气数据API

小沐:戈戈,最近我出门总是被突如其来的雨淋湿,你说古人是怎么预测天气的呀?

戈戈:哈哈,古人靠观云识天气,"朝霞不出门,晚霞行千里"就是老祖宗留下的经验。

小沐:那现在我们有没有更靠谱的方式?每次打开天气 APP 都感觉背后一定有什么神秘的力量在支撑!

戈戈:当然有!今天就来聊聊 OpenWeatherMap——一个让你用代码"呼风唤雨"的天气 API,Python、Node.js、Vue 都能玩!

1、认识 OpenWeatherMap

天气预报对我们的日常生活至关重要——它帮助我们决定今天该不该带伞、周末适不适合爬山。而在软件开发领域,天气数据同样是许多应用的核心需求,从出行 APP 到智能农业系统,背后都少不了一个稳定的天气数据源。

image

OpenWeatherMap 正是这样一位"幕后英雄"。它通过全球气象站网络、卫星和雷达,收集并处理来自世界各地的实时天气数据,以 JSON、XML 或 HTML 格式开放给开发者调用。无论是当前温度、湿度、风速、降水量,还是历史归档数据和未来预报,都可以通过简单的 HTTP 请求获取。

image

1.1 费用与注册

OpenWeatherMap 提供免费和付费两种套餐,免费版按60次/分钟限流,月调用量约26万次,该额度足够个人项目和小型应用使用。 注册地址:

https://home.openweathermap.org/users/sign_in
image

注册并登录后,在「API Keys」页面生成你的专属密钥(appid),后续所有接口调用都需要携带它。


2、核心接口一览

OpenWeatherMap 提供了多个系列的接口,覆盖从"现在"到"40年前"的完整气象数据链路。

2.1 One Call 3.0(全能版)

这是最强大的接口,一次调用即可获得:

  • 当前天气状态
  • 48 小时逐小时预报
  • 8 天每日预报
  • 政府级天气预警
  • 从 1979 年至今的任意时间戳天气数据
https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&appid={API key}

2.2 Current Weather(实时天气)

每 10 分钟更新一次,支持城市名称或经纬度查询,是最常用的基础接口:

# 按城市名查询(JSON格式)https://api.openweathermap.org/data/2.5/weather?q=Beijing&appid={API key}# 按经纬度查询https://api.openweathermap.org/data/2.5/weather?lat=39.92&lon=116.38&appid={API key}

常用参数说明:

参数
是否必填
说明
q
必填(二选一)
城市名称,支持中文
lat / lon
必填(二选一)
纬度 / 经度
appid
必填
API 密钥
units
可选
metric
(摄氏度)/ imperial(华氏度)
lang
可选
返回语言,如 zh_cn

2.3 历史天气与地图图层

历史数据接口支持按小时粒度查询 40 余年的气象档案;天气地图接口则提供 15 种可视化图层,包含降水、云量、温度等,非常适合做数据大屏。

# 历史天气查询https://history.openweathermap.org/data/2.5/history/city?lat={lat}&lon={lon}&type=hour&start={start}&cnt={cnt}&appid={API key}# 空气质量http://api.openweathermap.org/data/2.5/air_pollution?lat={lat}&lon={lon}&appid={API key}

3、实战演练:多语言接入示例

理论讲完了,程序员最爱的还是"跑起来"。下面用三种语言分别演示如何接入当前天气数据。

3.1 Python + Flask:构建天气查询服务

安装依赖:

pip install flask requests

下面我们用 Flask 搭建一个简单的天气查询 HTTP 服务,访问 /weather 路由即可返回北京的当前天气:

from flask import Flask, requestimport requestsapp = Flask(__name__)API_KEY = "你的API Key"  # 替换成你的密钥API_URL = "https://api.openweathermap.org/data/2.5/weather"# 首页:查询表单@app.route('/')def index():    return '''        <h3>天气查询</h3>        <form action="/weather">            城市(英文):<input name="city" value="Beijing">            <button>查询</button>        </form>    '''# 查询天气@app.route('/weather')def weather():    city = request.args.get('city')    res = requests.get(API_URL, params={        "q": city,        "appid": API_KEY,        "units": "metric",        "lang": "zh_cn"    })    if res.status_code != 200:        return "查询失败"    d = res.json()    return f"""        <h4>{d['name']}</h4>        <p>温度:{d['main']['temp']}℃</p>        <p>天气:{d['weather'][0]['description']}</p>        <p>湿度:{d['main']['humidity']}%</p>        <p>风速:{d['wind']['speed']}m/s</p>        <br><a href="/">返回</a>    """# JSON API 接口@app.route('/api')def api():    return requests.get(API_URL, params={        "q": request.args.get('city', 'Beijing'),        "appid": API_KEY,        "units": "metric"    }).json()if __name__ == '__main__':    app.run(debug=True)

代码运行结果如下:

image

启动服务后,浏览器访问 http://127.0.0.1:5000/weather,即可看到返回的 JSON 格式天气数据,包含温度(单位:°C)和天气描述。

image

4、Python 专属神器:PyOWM

如果你主要用 Python 开发,还有一个更"面向对象"的选择——PyOWM,一个专为 OpenWeatherMap 打造的 Python 客户端库。它把底层 HTTP 请求封装为直观的对象操作,几行代码就能拿到结构化的天气数据。

安装:

pip install PyOWM
image

使用示例:

import pyowm# 初始化客户端,传入 API Keyowm = pyowm.OWM('your_api_key')mgr = owm.weather_manager()# 查询北京当前天气observation = mgr.weather_at_place('beijing, CN')w = observation.weather# 获取摄氏度温度字典(包含最高、最低、体感温度等)print(w.temperature('celsius'))print(w.detailed_status)   # 天气描述,如 "light rain"

代码运行结果如下:

image

PyOWM 支持 Python 3.7+,除了基础天气查询,还封装了空气污染、UV 指数、气象站管理等高级接口,是 Python 开发者接入气象数据的首选工具。


5、其他天气 API 横向对比

除了 OpenWeatherMap,市面上还有不少优秀的天气数据服务,各有侧重:

服务商
免费额度
核心特色
OpenWeatherMap
60次/分钟,约26万次/月
全球覆盖广,分钟级预报,历史数据丰富,支持多语言,适配全球项目
高德天气 API
个人开发者:30万次/天
国内城市定位精准,接口调用简单,文档清晰,适合国内基础天气需求
和风天气(QWeather)
个人免费版:1000次/天
含空气质量、生活指数、气象预警,文档友好,国内城市适配度高
心知天气(Seniverse)
新用户14天试用;正式版:1万次/月
轻量简洁,响应速度快,适合入门学习与小型应用
AccuWeather
有限免费(约500次/天)
全球权威气象服务商,预报精度高,支持分钟级降水预报,适合对精度要求高的场景

对于国内项目,高德天气和和风天气在延迟和精准度上更有优势;面向全球用户的应用,OpenWeatherMap 和 AccuWeather 则是不二之选。


小沐:原来天气 APP 背后是这么运转的!以后再被雨淋,我就自己写个预警程序!

戈戈:哈哈,学以致用才是正道。不过记得先申请好 API Key,别让"晴天霹雳"打了你个措手不及。

结语

如果您觉得这些文字有一点点用处,请给作者点个赞或关个注;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见:
CSDN博客:爱看书的小沐
微信公众号:杨小羊爱阅读

最新文章

随机文章