Python技术迷

PyOWM:一个可以访问天气数据的 Python 库

最近有朋友问我,Python 有没有什么简单的方式能拿到天气预报数据?其实还真有个特别方便的小库 —— PyOWM。它是 OpenWeatherMap 提供的官方 Python SDK,用起来比直接调 API 轻松多了。下面我就带大家一步步看下它到底能干嘛、怎么用。

一、安装与初始化

首先得装库。终端里一句命令搞定:

pip install pyowm

然后需要去 OpenWeatherMap 官网 注册一个账号,申请个 API key,有了这个 key 才能正常访问天气数据。比如我们这样初始化:

from pyowm import OWM

owm = OWM('你的_API_KEY')
mgr = owm.weather_manager()

这里 mgr 就是个天气管理对象,后面所有天气查询都靠它。

二、获取实时天气

假设我想查下“上海”的天气,就一行代码:

observation = mgr.weather_at_place('Shanghai, CN')
weather = observation.weather
print(weather.status)      # 比如:'Clouds'
print(weather.temperature('celsius'))  # {'temp': 18.5, 'feels_like': 17.8, ...}

PyOWM 把数据封装成对象了,直接属性调用就行,不用自己去解析 JSON。 而且还能拿湿度、风速、气压、日出日落时间这些。

print(weather.humidity)      # 湿度 %
print(weather.wind())        # 风速信息
print(weather.pressure)      # {'press': 1013, 'sea_level': None}

这点挺贴心的,接口清晰,比直接访问 API 的体验好太多。

三、天气预报功能

除了当前天气,PyOWM 还可以看未来几天的预报。比如获取未来五天的天气趋势:

forecast = mgr.forecast_at_place('Shanghai, CN', '3h').forecast
for w in forecast:
    print(w.reference_time('iso'), w.status, w.temperature('celsius')['temp'])

这里 '3h' 表示每 3 小时一个数据点,也可以改成 'daily' 查看每日汇总。 这个在做小工具、看趋势变化时特别有用。

四、结合地理坐标使用

有时候项目里拿到的是经纬度,而不是城市名,那也一样能查:

lat, lon = 31.2304, 121.4737# 上海
observation = mgr.weather_at_coords(lat, lon)
print(observation.weather.detailed_status)

甚至可以批量查询,比如配合数据库里的城市坐标,一次性拉取多个地方天气做分析或可视化。

五、查询空气质量(AQI)

PyOWM 还可以访问 OpenWeatherMap 的空气污染 API,这个在环境类应用里很实用:

air_mgr = owm.airpollution_manager()
aq = air_mgr.air_quality_at_coords(31.2304, 121.4737)
print(aq.aqi)  # 空气质量指数

返回的 AQI 值一般 1-5,数值越大污染越严重。

六、一个简单的综合示例

比如我们想写个小脚本,每天早上自动提醒今天的天气:

from pyowm import OWM
from datetime import datetime

defget_today_weather(city):
    owm = OWM('你的_API_KEY')
    mgr = owm.weather_manager()
    w = mgr.weather_at_place(city).weather
    temp = w.temperature('celsius')['temp']
returnf"{datetime.now().strftime('%Y-%m-%d')}{city} 天气:{w.detailed_status},{temp}°C"

print(get_today_weather('Beijing, CN'))

可以再配合 smtplib 发邮件或用微信机器人推送,实现一个“天气日报”。

七、一些注意点

  1. 免费版 API 每分钟最多 60 次请求,做爬虫或大数据分析要注意限速。
  2. 城市名建议加国家代码,否则像 “Paris” 这种可能匹配到多个结果。
  3. 天气数据默认是 Kelvin 温度,要记得指定 'celsius'。

总的来说,PyOWM 就像给 OpenWeatherMap 套了个“Python 外壳”,封装得很自然,语义化很好,特别适合写脚本、工具、甚至嵌入到 Flask/Django 项目里当天气模块。

用几行代码就能拿到实时天气、预报和空气质量数据,轻松得很。 

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领