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级
类型:晴
建议:愿你拥有比阳光明媚的心情
=====================================================
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,544评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,711评论 1 180
  • 我是一名大三的学生,男朋友是东北人,今年九月份开学前我们拿着假期打工赚的钱去了一趟云南——我梦想的地方。我们特意在...
    燕子南归阅读 1,588评论 30 26
  • “没带钱不要紧,微信转给你” “啊,出门很少带钱的,微信转给你吧” 从刚开始的不好意思我忘了带现金可以微信给你吗?...
    艾就爱阅读 202评论 0 0