Python-json在线API天气查询

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级
类型:晴
建议:愿你拥有比阳光明媚的心情
=====================================================
    原文作者:_RedFox_
    原文地址: https://www.jianshu.com/p/76d247079be4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞