我厌倦了 Open Weather Map,因为文档说它有“下雨”,但是当我调用它时却没有。所以我尝试了 Python Weather API,但是来自weather.com、noaa 或yahoo 天气的这些选项都没有降雨或降水。所以我尝试了 Wunderground 但这似乎只适用于美国城市,而且我也懒得去买 key 了。

有谁知道从这里去哪里?

在开放的天气 map 上,它说下雨了,但我在结果中没有看到:

JSON 调用示例

{"coord":{"lon":139,"lat":35},
"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049},
"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}],
"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04},
"wind":{"speed":7.31,"deg":187.002},
"rain":{"3h":0},                      # on this line
"clouds":{"all":92},
"dt":1369824698,
"id":1851632,
"name":"Shuzenji",
"cod":200}

然而,当我这样称呼它时
from pprint import pprint
import requests
r = requests.get('http://api.openweathermap.org/data/2.5/weather?q=Vancouver')
pprint(r.json())

我得到了没有降雨/降水的东西。
{u'base': u'cmc stations',
 u'clouds': {u'all': 0},
 u'cod': 200,
 u'coord': {u'lat': 49.25, u'lon': -123.12},
 u'dt': 1406042326,
 u'id': 6173331,
 u'main': {u'humidity': 77,
           u'pressure': 862,
           u'temp': 289.33,
           u'temp_max': 290.93,
           u'temp_min': 288.15},
 u'name': u'Vancouver',
 u'sys': {u'country': u'CA',
          u'message': 0.1867,
          u'sunrise': 1406032353,
          u'sunset': 1406088323},
 u'weather': [{u'description': u'Sky is Clear',
               u'icon': u'01d',
               u'id': 800,
               u'main': u'Clear'}],
 u'wind': {u'deg': 104.001, u'speed': 2.75}}

最佳答案

根据 documentationweatherrain.3hsnow.3h 都是 optional 参数,说明它们不会一直包含在结果中。

我的解释是,如果当时没有雨或雪,则不会报告雨和雪——例如在你的例子中,它说“天空晴朗”——但这也可能意味着他们只是不保证雨/雪数据。

关于python - 如何通过天气api获取降水/降雨?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24892850/

10-12 02:53