zoukankan      html  css  js  c++  java
  • [转载]中国天气网API

    最近在做个网站要用到天气网的api,在网上找了些参考资料,这篇文章对天气网api的介绍比较详细,所以转载之,谢谢原作者的辛勤劳动和奉献精神.

    原文地址:http://g.kehou.com/t1033317914.html

    上次做飞信天气预报的时候简单搜索了一下中国天气网的 API ,当然是没有官方文档的,最初是谁挖掘出来的也不可考了。刚才在增加新功能的时候又顺手搜了一下相关资料,发现这个 API 还真不简单。中国天气网有三个 API 适用于不同场合的使用。

    http://m.weather.com.cn/data/101050101.html 这个接口返回的格式如下。

     

    {
        "weatherinfo": {
            "city": "哈尔滨", // 城市中文名
            "city_en": "haerbin", // 城市英文名
            "date_y": "2012年8月18日", // 发布日期
            "date": "", // ?
            "week": "星期六", // 周信息
            "fchh": "18", // 信息发布时的整点小时数(感谢读者 白白乌鸦 的提醒)
            "cityid": "101050101", // 城市ID
            "temp1": "18℃~26℃", // 今日气温
            "temp2": "17℃~29℃", // 明日气温
            "temp3": "18℃~23℃", // 第三日气温
            "temp4": "13℃~24℃", // 第四日气温
            "temp5": "15℃~31℃", // 第五日气温
            "temp6": "14℃~32℃", // 第六日气温
            "tempF1": "64.4℉~78.8℉", // 今日气温(华氏)
            "tempF2": "62.6℉~84.2℉", // 明日气温(华氏)
            "tempF3": "64.4℉~73.4℉", // 第三日气温(华氏)
            "tempF4": "55.4℉~75.2℉", // 第四日气温(华氏)
            "tempF5": "59℉~87.8℉", // 第五日气温(华氏)
            "tempF6": "57.2℉~89.6℉", // 第六日气温(华氏)
            "weather1": "多云", // 今日天气
            "weather2": "晴转多云", // 明日天气
            "weather3": "雷阵雨转小雨", // 第三日天气
            "weather4": "多云", // 第四日天气
            "weather5": "晴", // 第五日天气
            "weather6": "晴", // 第六日天气
            "img1": "1", // 天气图标编号,此处的编号及其图片获取规则尚不清楚,如有知道详情的恳请评论告知,我将添加说明
            "img2": "99", // 天气图标编号
            "img3": "0", // 天气图标编号
            "img4": "1", // 天气图标编号
            "img5": "4", // 天气图标编号
            "img6": "7", // 天气图标编号
            "img7": "1", // 天气图标编号
            "img8": "99", // 天气图标编号
            "img9": "0", // 天气图标编号
            "img10": "99", // 天气图标编号
            "img11": "0", // 天气图标编号
            "img12": "99", // 天气图标编号
            "img_single": "1", // ? 可能是天气图标编号
            "img_title1": "多云", // ? 可能是天气图标对应的 title
            "img_title2": "多云", // ? 可能是天气图标对应的 title
            "img_title3": "晴", // ? 可能是天气图标对应的 title
            "img_title4": "多云", // ? 可能是天气图标对应的 title
            "img_title5": "雷阵雨", // ? 可能是天气图标对应的 title
            "img_title6": "小雨", // ? 可能是天气图标对应的 title
            "img_title7": "多云", // ? 可能是天气图标对应的 title
            "img_title8": "多云", // ? 可能是天气图标对应的 title
            "img_title9": "晴", // ? 可能是天气图标对应的 title
            "img_title10": "晴", // ? 可能是天气图标对应的 title
            "img_title11": "晴", // ? 可能是天气图标对应的 title
            "img_title12": "晴", // ? 可能是天气图标对应的 title
            "img_title_single": "多云", // ? 可能是天气图标对应的 title
            "wind1": "西南风小于3级转西风3-4级", // 今日风向风力信息
            "wind2": "西风小于3级转西南风3-4级", // 明日风向风力信息
            "wind3": "西南风小于3级转3-4级", // 第三日风向风力信息
            "wind4": "西南风小于3级转3-4级", // 第四日风向风力信息
            "wind5": "西南风小于3级转3-4级", // 第五日风向风力信息
            "wind6": "西南风小于3级转3-4级", // 第六日风向风力信息
            "fx1": "西南风", // ? 
            "fx2": "西风", // ? 
            "fl1": "小于3级转3-4级", // 今日风力信息
            "fl2": "小于3级转3-4级", // 明日风力信息
            "fl3": "小于3级转3-4级", // 第三日风力信息
            "fl4": "小于3级转3-4级", // 第四日风力信息
            "fl5": "小于3级转3-4级", // 第五日风力信息
            "fl6": "小于3级转3-4级", // 第六日风力信息
            "index": "热",
            "index_d": "天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。",
            "index48": "炎热",
            "index48_d": "天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。",
            "index_uv": "中等", // 紫外线信息
            "index48_uv": "弱", // 48 小时紫外线信息
            "index_xc": "较适宜", // 洗车指数(感谢读者 刘睿 的提醒)
            "index_tr": "适宜", // 旅游指数
            "index_co": "舒适", // 舒适指数
            "st1": "25",
            "st2": "17",
            "st3": "28",
            "st4": "19",
            "st5": "18",
            "st6": "16",
            "index_cl": "较适宜", // 晨练指数
            "index_ls": "适宜", // 晾晒指数
            "index_ag": "极易发" // 感冒指数(感谢读者 刘睿 的提醒)
        }
    }
    

    上面这个就是我现在在用的,返回的数据最全面,也是绝大多数博客中都会介绍的。另外还有两个接口比较简洁。

    http://www.weather.com.cn/data/sk/101010100.html 这个接口返回的数据是实况数据,像下面这样的。

    {
        "weatherinfo": {
            "city": "北京", // 城市中文名
            "cityid": "101010100", // 城市 ID
            "temp": "24", // 温度
            "WD": "西南风", // 风向
            "WS": "1级", // 风力
            "SD": "92%", // 湿度
            "WSE": "1", // ? 
            "time": "19:15", // 发布时间
            "isRadar": "1", // 是否有雷达图 
            "Radar": "JC_RADAR_AZ9010_JB" // 雷达图编号,雷达图的地址在 http://www.weather.com.cn/html/radar/雷达图编号.shtml 
        }
    }
    

    还有一个接口http://www.weather.com.cn/data/cityinfo/101010100.html 这个接口返回的数据如下。

    {
        "weatherinfo": {
            "city": "北京", // 城市中文名
            "cityid": "101010100", // 城市 ID
            "temp1": "22℃", // ? 
            "temp2": "31℃", // ? 
            "weather": "阴转晴", // 天气
            "img1": "n2.gif", // ? 天气图标编号
            "img2": "d0.gif", // ? 天气图标编号
            "ptime": "18:00" // 发布时间
        }
    }
    

    另外中国天气网还有一个根据 IP 来判断访问者所在地的引擎,地址在http://61.4.185.48:81/ ,直接访问的话会提示“This is the geoip engine created for weather.com.cn. ”,访问http://61.4.185.48:81/g/ 可以返回你的 IP 所在地相应信息,包括 IP 和城市编号,但是没有城市名称。

    2013 年 8 月 2 日更新:返回数据最多的那个接口,即本文中最开始介绍的接口,其中的图片获取规则因为博文发布时间久远,我已经遗忘了。如果有哪位读者知道的话,恳请评论告知,我好添加到文章中,方便各位的共享。

    另外,天气网本身有另一个用于 Flash 的接口。在天气网上查询任意一个城市的天气,可以看到其页面上有一个 Flash 绘制的“整点天气实况”,就是当天的气温曲线。里面的数据是从 http://flash.weather.com.cn/sk2/101050101.xml 这个接口获得的。返回数据如下。

         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
    
    

    稍作解析: sktq 是“实况天气”的汉语拼音首字母缩写,这个节点的 id 是城市 ID ,ptime 即是发布时间, city 是城市的名称。根节点内是一系列 qw 节点, qw 即是“气温”的汉语拼音缩写;每个节点中, h 是整点小时数,即此节点数据发布时间的小时位; wd 是温度,以摄氏计; fx 是风向,貌似是个角度,具体的规则我还不太清楚; fl 是风力级数; js 是降水,以毫米计; sd 是相对湿度,以百分数计。这一系列节点是以时间逆序排列的,也就是说,接近当前时间的排在前面。

    要使用这个接口的数据,跟其他接口一样,也需要解决读者评论中提到的跨域问题,我个人的建议是用自己的服务器做代理转发,经过代理层之后是要用 JSON 还是 JSONP 或者 Flash 跨域,就随自己喜好和项目需求了吧。

    2013 年 8 月 22 日更新:四个图片接口依次如下:http://m.weather.com.cn/img/c0.gif  http://m.weather.com.cn/img/b0.gif http://www.weather.com.cn/m/i/weatherpic/29x20/d0.gif http://www.weather.com.cn/m2/i/icon_weather/29x20/n00.gif 。其中图片编号 99 代表空图片。

    对于想手动获取城市代码的朋友,也有几个接口提供给大家。获取省级代码的接口:http://www.weather.com.cn/data/list3/city.xml?level=1 ,获取城市代码的接口(比如安徽省是 22 ): http://www.weather.com.cn/data/list3/city22.xml?level=2 ,获取区域代码的接口(比如安庆是 2206):http://www.weather.com.cn/data/list3/city2206.xml?level=3 。需要注意的是这几个接口并不是返回 XML 文档,而是返回纯文本,需要自行分割匹配。

    Flash 实况地址在这里: http://flash.weather.com.cn/sk2/shikuang.swf?id=101050101

    本次更新的内容都来自于 http://g.kehou.com/t1033317914.html,在此对接口的挖掘者和分享者表示感谢!也感谢读者朋友的反馈。

  • 相关阅读:
    DB2 for Z/os Statement prepare
    Foreign key (referential) constraints on DB2 LUW v105
    复制Informational constraints on LUW DB2 v105
    DB2 SQL Mixed data in character strings
    DB2 create partitioned table
    MVC中使用EF的技巧集(一)
    Asp.Net MVC 开发技巧(二)
    Linq使用技巧及查询示例(一)
    Asp.Net MVC 开发技巧(一)
    Asp.Net MVC Identity 2.2.1 使用技巧(八)
  • 原文地址:https://www.cnblogs.com/iack/p/3506744.html
Copyright © 2011-2022 走看看