You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenWeather Map API获取降雨数据及预报遇阻求助

解决OpenWeather Map API降雨数据获取问题

1. 当前降雨量获取错误的原因

你用data['weather'][0]['rain']是找错了字段位置——OpenWeather的返回结构里,当前降雨量数据不在weather数组内,而是直接在响应的根层级:

  • 如果当前有降雨,响应里会有rain对象,包含1h或3h字段(分别是过去1小时/3小时的降雨量)
  • 如果当前没有降雨,这个字段不会存在,直接访问会触发KeyError

正确的获取方式需要先判断字段是否存在:

# 检查根节点是否包含rain字段
if 'rain' in data:
    # 获取过去1小时降雨量(不存在则默认0)
    rain_1h = data['rain'].get('1h', 0)
    # 或获取过去3小时降雨量
    rain_3h = data['rain'].get('3h', 0)
else:
    rain_1h = 0
    rain_3h = 0

2. 降雨概率的获取(免费版支持)

免费版的当前天气API(/weather接口)不提供降雨概率,这个数据仅在5天逐3小时预报API(/forecast接口)中存在。每个预报时段的pop字段就是降雨概率(取值0-1,1代表100%概率):

# 以第一个预报时段为例
forecast_data = response.json()
first_pop = forecast_data['list'][0]['pop']
# 转换为百分比格式
pop_percent = first_pop * 100

3. 免费版API限制提醒

免费版/forecastAPI最多返回5天、每3小时一个时段的预报数据,足够获取未来不同时段的降雨概率;另外只有当前确实有降雨时,/weather接口的响应才会包含rain字段,无降雨时该字段不会出现,务必做存在性判断避免报错。

内容的提问来源于stack exchange,提问作者Hope Sain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:57:00