API是JSON在线的,感觉挺好的,直接贴代码:
# -*- coding:UTF-8 -*-
import urllib.parse
import urllib.request
import ssl
import json
ssl._create_default_https_context = ssl._create_unverified_context # 支持HTTPS
key_info = {
'date': '日期',
'sunrise': '日出',
'high': '高温',
'low': '低温',
'sunset': '日落',
'aqi': '空气质量指数',
'fx': '风向',
'fl': '风力',
'type': '类型',
'notice': '建议'
}
city = str(input('你想查询天气的城市:'))
url = 'https://www.sojson.com/open/api/weather/json.shtml?city=' # 申明URL字符串
url += urllib.parse.quote(city) # 对城市名编码并加入URL
req = urllib.request.urlopen(url)
info = json.loads(req.read())
if info.get('status') == 200:
weather = info['data']
# 部分城市PM2.5、PM10值为None,weather['pm25']报错
today_weather = '湿度:{0},PM2.5:{1},PM10:{2},空气质量:{3},温度:{4}'.format(weather.get('shidu'), weather.get('pm25'), weather.get('pm10'), weather.get('quality'), weather.get('wendu'))
print(info['city'] + ' 今日天气:') # 打印今日天气
print(today_weather)
print("=====================================================")
print(info['city'] + ' 昨日天气:') # 打印昨日天气
for key in weather['yesterday']:
print(key_info[key] + ':' + str(weather['yesterday'][key]))
print("=====================================================")
print(info['city'] + ' 未来5天气:') # 打印未来5天天气
for i in range(4):
for key in weather['forecast'][i]:
print(key_info[key] + ':' + str(weather['forecast'][i][key]))
print("=====================================================")
else:
print(info.get('message'))
测试结果如下:
你想查询天气的城市:成都
成都 今日天气:
湿度:77%,PM2.5:64.0,PM10:106.0,空气质量:良,温度:20
=====================================================
成都 昨日天气:
日期:12日星期四
日出:06:42
高温:高温 24.0℃
低温:低温 15.0℃
日落:19:29
空气质量指数:86.0
风向:无持续风向
风力:<3级
类型:小雨
建议:雨虽小,注意保暖别感冒
=====================================================
成都 未来5天气:
日期:13日星期五
日出:06:41
高温:高温 17.0℃
低温:低温 9.0℃
日落:19:30
空气质量指数:49.0
风向:无持续风向
风力:<3级
类型:小雨
建议:雨虽小,注意保暖别感冒
=====================================================
日期:14日星期六
日出:06:40
高温:高温 18.0℃
低温:低温 8.0℃
日落:19:30
空气质量指数:53.0
风向:无持续风向
风力:<3级
类型:多云
建议:阴晴之间,谨防紫外线侵扰
=====================================================
日期:15日星期日
日出:06:38
高温:高温 20.0℃
低温:低温 8.0℃
日落:19:31
空气质量指数:72.0
风向:无持续风向
风力:<3级
类型:阴
建议:不要被阴云遮挡住好心情
=====================================================
日期:16日星期一
日出:06:37
高温:高温 21.0℃
低温:低温 11.0℃
日落:19:32
空气质量指数:76.0
风向:无持续风向
风力:<3级
类型:晴
建议:愿你拥有比阳光明媚的心情
=====================================================