当我们想知道当前天气的时候,一般都会打开天气APP或者在搜索引擎中搜索实时天气,但是这样的耗费时间和体验并不好。为了更方便地获取实时天气信息,我们可以使用Python编写脚本,实现自主查询实时天气。
准备工作
首先我们需要准备一个API来获取天气信息。这里我们使用和风天气API,他提供了可扩展的接口,支持国内外城市的天气查询。需要提前在和风天气官网申请API Key。
在本文的示例中,我们使用requests
库来发起HTTP请求并获取API数据。requests
库通过向API发送HTTP请求来获取响应,从而实现API调用,这也是Python处理API的一种通用方式。如果您的系统中没有安装requests
库,可以使用如下命令进行安装:
pip install requests
实现步骤
接下来我们来实现Python获取实时天气的步骤:
- 引入需要用到的库
import requests
- 构造API请求
我们使用和风天气API来获取天气信息,这里构建API请求的URL串:
url = "https://free-api.heweather.com/s6/weather/now?location=%s&key=%s"
其中%s
表示占位符,后面可以填入需要查询的城市名和API Key。
- 使用requests库发起HTTP请求
result = requests.get(url % (city, key))
其中city
是城市名称,key
是和风天气API Key。result
是API的返回值,可以通过打印result.text
查看API返回的JSON数据。
- 解析API返回的JSON数据
获得JSON数据之后,我们就可以通过Python代码将数据解析成有用的信息了。
data = result.json()
now = data["HeWeather6"][0]["now"]
cond = now["cond_txt"]
tmp = now["tmp"]
wind_dir = now["wind_dir"]
wind_sc = now["wind_sc"]
fl = now["fl"]
hum = now["hum"]
pcpn = now["pcpn"]
pres = now["pres"]
在这里,我们从JSON数据中取出了实时天气的信息,如天气状况、温度、风向、风力等等。
- 展示实时天气信息
最后一步就是将获取的实时天气信息展示出来,方便用户查看。
print("今天%s,温度%s℃,风向%s,风力%s级,体感温度%s℃,湿度%s%%,降水量%s,气压%s。" %(cond, tmp, wind_dir, wind_sc, fl, hum, pcpn, pres))
通过以上步骤,我们就可以通过Python获取实时天气信息了。
示例
下面给出使用Python查询北京和上海实时天气的示例代码:
import requests
key = "你的API Key"
# 北京
city = "北京"
url = "https://free-api.heweather.com/s6/weather/now?location=%s&key=%s"
result = requests.get(url % (city, key))
data = result.json()
now = data["HeWeather6"][0]["now"]
cond = now["cond_txt"]
tmp = now["tmp"]
wind_dir = now["wind_dir"]
wind_sc = now["wind_sc"]
fl = now["fl"]
hum = now["hum"]
pcpn = now["pcpn"]
pres = now["pres"]
print("北京今天%s,温度%s℃,风向%s,风力%s级,体感温度%s℃,湿度%s%%,降水量%s,气压%s。" %(cond, tmp, wind_dir, wind_sc, fl, hum, pcpn, pres))
# 上海
city = "上海"
result = requests.get(url % (city, key))
data = result.json()
now = data["HeWeather6"][0]["now"]
cond = now["cond_txt"]
tmp = now["tmp"]
wind_dir = now["wind_dir"]
wind_sc = now["wind_sc"]
fl = now["fl"]
hum = now["hum"]
pcpn = now["pcpn"]
pres = now["pres"]
print("上海今天%s,温度%s℃,风向%s,风力%s级,体感温度%s℃,湿度%s%%,降水量%s,气压%s。" %(cond, tmp, wind_dir, wind_sc, fl, hum, pcpn, pres))
输出结果:
北京今天多云,温度31℃,风向南风,风力2级,体感温度34℃,湿度51%,降水量0,气压1000。
上海今天阵雨,温度30℃,风向南风,风力2级,体感温度36℃,湿度78%,降水量3.2,气压1008。
上面的代码中,我们首先输入了我们的API Key,然后构建了查询API的URL,并使用requests库发起HTTP请求。接着解析返回的JSON数据,并输出了实时天气信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现自主查询实时天气 - Python技术站