📜  Python | 使用openweathermap API查找任何城市的当前天气

📅  最后修改于: 2020-05-13 13:14:55             🧑  作者: Mango

openweathermap是一项给Web服务和移动应用程序的开发人员提供天气数据(包括当前天气数据,预报和历史数据)的服务。
它提供了一个具有JSON,XML和HTML端点以及有限的免费使用层的API。每分钟访问60次以上,则需要每月40美元起的付费订阅。访问历史数据需要每月150美元起的订阅。用户可以请求当前的天气信息,扩展的预报和图形地图(显示云量,风速,压力和降水量)。

要使用当前的天气数据API,必须使用API​​密钥,可以在此处获取 。
注意:用户需要在openweathermap.org上创建一个帐户,然后才可以使用API​​。
所需模块:

requests
json

下面是实现:

# Python程序使用openweathermap API查找任何城市的当前天气详细信息
# 导入所需的模块
import requests, json
# 在此处输入您的API密钥
api_key = "Your_API_Key"
# base_url变量来存储URL
base_url = "http://api.openweathermap.org/data/2.5/weather?"
# 输入城市名称
city_name = input("Enter city name : ")
# complete_url变量,用于存储完整的URL地址
complete_url = base_url + "appid=" + api_key + "&q=" + city_name
# 请求模块的get方法返回响应对象
response = requests.get(complete_url)
# 响应对象的JSON方法将JSON格式的数据转换为Python格式的数据
x = response.json()
# 现在x包含嵌套字典列表
# 检查“ cod"键的值等于“ 404",表示找到了城市,否则未找到城市
if x["cod"] != "404":
    # 将“主"键的值存储在变量y中
    y = x["main"]
    # 存储与y的“ temp"键对应的值
    current_temperature = y["temp"]
    # 存储与y的“pressure"键对应的值
    current_pressure = y["pressure"]
    # 存储与y的“humidity"键对应的值
    current_humidiy = y["humidity"]
    # 将“weather"键的值存储在变量z中
    z = x["weather"]
    # 将与“description"键对应的值存储在z的第0个索引处
    weather_description = z[0]["description"]
    # 打印以下值
    print(" Temperature (in kelvin unit) = " +
                    str(current_temperature) +
          "\n atmospheric pressure (in hPa unit) = " +
                    str(current_pressure) +
          "\n humidity (in percentage) = " +
                    str(current_humidiy) +
          "\n description = " +
                    str(weather_description))
else:
    print(" City Not Found ")

输出:

 Enter city name : Delhi
 Temperature (in kelvin unit) = 312.15
 atmospheric pressure (in hPa unit) = 996
 humidity (in percentage) = 40
 description = haze