zoukankan      html  css  js  c++  java
  • 极速数据查询天气的接口

    注册了个账号,然后用python接口调用,如下是官方给出的python2的接口调用方式:

    #!/usr/bin/python
    # encoding:utf-8
     
    import urllib2, json, urllib
     
     
    #  1、天气预报查询
     
     
    data = {}
    data["appkey"] = "your_appkey_here"
    data["city"] = "杭州"
    data["cityid"] = "111"#任选
    data["citycode"] ="101260301"#任选
     
    url_values = urllib.urlencode(data)
    url = "http://api.jisuapi.com/weather/query" + "?" + url_values
    result = urllib2.urlopen(url)
    jsonarr = json.loads(result.read())
     
    if jsonarr["status"] != u"0":
        print jsonarr["msg"]
        exit()
    result = jsonarr["result"]
    print result["city"],result["cityid"],result["citycode"],result["date"],result["week"],result["weather"],result["temp"]
    print result["temphigh"],result["templow"],result["img"],result["humidity"],result["pressure"],result["windspeed"],result["winddirect"]
    print result["windpower"],result["updatetime"]
    print "指数:"
    for i in result["index"]:
        if i.has_key("ivalue"):
            print i["iname"],i["ivalue"],i["detail"]
        else:
            print i["iname"],i["index"],i["detail"]
     
    print "空气质量指数:"
    aqi = result["aqi"]
    print aqi["so2"],aqi["so224"],aqi["no2"],aqi["no224"],aqi["co"]
    print aqi["co24"],aqi["o3"],aqi["o38"],aqi["o324"],aqi["pm10"]
    print aqi["pm1024"],aqi["pm2_5"],aqi["pm2_524"],aqi["iso2"],aqi["ino2"]
    print aqi["ico"],aqi["io3"],aqi["io38"],aqi["ipm10"],aqi["ipm2_5"]
    print aqi["aqi"],aqi["primarypollutant"],aqi["quality"],aqi["timepoint"]
    print aqi["aqiinfo"]["level"],aqi["aqiinfo"]["color"],aqi["aqiinfo"]["affect"],aqi["aqiinfo"]["measure"]
     
    print "未来几天天气:"
    for daily in result["daily"]:
        print daily["date"],daily["week"],daily["sunrise"],daily["sunset"]
        print daily["night"]["weather"],daily["night"]["templow"],daily["night"]["img"],daily["night"]["winddirect"],daily["night"]["windpower"]
        print daily["day"]["weather"],daily["day"]["img"],daily["day"]["winddirect"],daily["day"]["windpower"]
     
    print "未来几小时天气:"
    for hourly in result["hourly"]:
        print hourly["time"],hourly["weather"],hourly["temp"],hourly["img"]

    返回的数据是json格式:如下所示:

    {
        "status": "0",
        "msg": "ok",
        "result": {
            "city": "安顺",
            "cityid": "111",
            "citycode": "101260301",
            "date": "2015-12-22",
            "week": "星期二",
            "weather": "多云",
            "temp": "16",
            "temphigh": "18",
            "templow": "9",
            "img": "1",
            "humidity": "55",
            "pressure": "879",
            "windspeed": "14.0",
            "winddirect": "南风",
            "windpower": "2级",
            "updatetime": "2015-12-22 15:37:03",
            "index": [
                {
                    "iname": "空调指数",
                    "ivalue": "较少开启",
                    "detail": "您将感到很舒适,一般不需要开启空调。"
                },
                {
                    "iname": "运动指数",
                    "ivalue": "较适宜",
                    "detail": "天气较好,无雨水困扰,较适宜进行各种运动,但因气温较低,在户外运动请注意增减衣物。"
                }
            ],
            "aqi": {
                "so2": "37",
                "so224": "43",
                "no2": "24",
                "no224": "21",
                "co": "0.647",
                "co24": "0.675",
                "o3": "26",
                "o38": "14",
                "o324": "30",
                "pm10": "30",
                "pm1024": "35",
                "pm2_5": "23",
                "pm2_524": "24",
                "iso2": "13",
                "ino2": "13",
                "ico": "7",
                "io3": "9",
                "io38": "7",
                "ipm10": "35",
                "ipm2_5": "35",
                "aqi": "35",
                "primarypollutant": "PM10",
                "quality": "",
                "timepoint": "2015-12-09 16:00:00",
                "aqiinfo": {
                    "level": "一级",
                    "color": "#00e400",
                    "affect": "空气质量令人满意,基本无空气污染",
                    "measure": "各类人群可正常活动"
                }
            },
            "daily": [
                {
                    "date": "2015-12-22",
                    "week": "星期二",
                    "sunrise": "07:39",
                    "sunset": "18:09",
                    "night": {
                        "weather": "多云",
                        "templow": "9",
                        "img": "1",
                        "winddirect": "无持续风向",
                        "windpower": "微风"
                    },
                    "day": {
                        "weather": "多云",
                        "temphigh": "18",
                        "img": "1",
                        "winddirect": "无持续风向",
                        "windpower": "微风"
                    }
                }
            ],
            "hourly": [
                {
                    "time": "16:00",
                    "weather": "多云",
                    "temp": "14",
                    "img": "1"
                },
                {
                    "time": "17:00",
                    "weather": "多云",
                    "temp": "13",
                    "img": "1"
                }
            ]
        }
    }

    我自己机器是python3.6,所以需要把他的代码进行更改:

    程序中的

    #url_values = urllib.urlencode(data)
    url_values = urllib.parse.urlencode(data)

    python3用requests就可以了,不必用urllib2,因为后者是python2用的。所以

    导入的包改为:

    import json
    import urllib
    import requests

    但是发现程序在

    url_values = urllib.parse.urlencode(data)报错了,说是没有parse模块好像。然后我又把

    import urllib

    改为:

    import urllib.parse

    这样就错误就解决了(奇怪的是后来我又改成import urllib,但是却不报错了,奇怪~)。

      程序还有另外两处改动,改动如下:

    #result = urllib2.urlopen(url)
    result = requests.get(url).text
    #jsonarr = json.loads(result.read())
    jsonarr = json.loads(result)

      最后可以正确跑通调用的程序如下:

    #!/usr/bin/python
    # encoding:utf-8
     
    #import urllib2, json, urllib
    import json
    import urllib
    import requests
     
     
    #  1、天气预报查询
    
    data = {}
    data["appkey"] = "你自己注册的"
    data["city"] = "杭州"
    
    #url_values = urllib.urlencode(data)
    url_values = urllib.parse.urlencode(data)
    url = "http://api.jisuapi.com/weather/query" + "?" + url_values
    #result = urllib2.urlopen(url)
    result = requests.get(url).text
    #jsonarr = json.loads(result.read())
    jsonarr = json.loads(result)
     
    if jsonarr["status"] != u"0":
        print (jsonarr["msg"])
        exit()
    result = jsonarr["result"]
    
    print ("天气情况:")
    #print('type(result["daily"])',type(result["daily"]))
    daily = result["daily"][0]
    print('最高气温,最低气温:')
    print(daily["day"]["temphigh"])
    print(daily["night"]["templow"])
    
    
    print (daily["date"],daily["week"])
    print (daily["day"]["weather"],daily["day"]["winddirect"],daily["day"]["windpower"])
    print (daily["night"]["weather"],daily["night"]["winddirect"],daily["day"]["windpower"])
    
    print('今天'+','+result["city"] + ','+'白天天气' + daily["day"]["weather"]+ ',' +'风向'+ daily["day"]["winddirect"] 
    +','+'夜间天气' + daily["day"]["weather"] +','+'风向'+ daily["day"]["winddirect"] +'.' + '最高气温' +daily["day"]["temphigh"] +'' +'最低气温'+ daily["night"]["templow"] +'')
  • 相关阅读:
    jvm 虚拟机参数_新生代内存分配
    jvm 虚拟机参数_堆内存分配
    Xshell 安装 Xftp
    使用 Xshell 连接 linux 系统
    linux 常用命令
    java JSON 和 Object 相互转换
    vsftp实现只能上传不能下载、删除权限配置
    从返回的HTTP Header信息中隐藏Apache的版本号及PHP的X-Powered-By信息
    在SecureCRT中无需输入密码登录Linux主机
    ssh 设置私钥实现两台linux主机无密码访问
  • 原文地址:https://www.cnblogs.com/www-caiyin-com/p/8386358.html
Copyright © 2011-2022 走看看