中国国家气象局天气预报接口

 

中国国家气象局天气预报接口总共提供了三个:

http://www.weather.com.cn/data/sk/101010100.html

http://www.weather.com.cn/data/cityinfo/101010100.html

http://m.weather.com.cn/data/101010100.html

最详细的信息来自第三个接口。上面url中的101010100是城市代码,这里是北京的城市代码。只需要改变城市代码,就可以得到所在城市的天气信息。笔者在福州,所以选择的城市代码是福州101230101。

在浏览器上输入url:http://m.weather.com.cn/data/101230101.html得到信息,天气信息是json的数据格式,数据如下:

{"weatherinfo":{"city":"福州","city_en":"fuzhou","date_y":"2012年5月14日","date":"","week":"星期一","fchh":"08","cityid":"101230101","temp1":"29℃~23℃","temp2":"26℃~20℃","temp3":"24℃~20℃","temp4":"25℃~20℃","temp5":"24℃~21℃","temp6":"25℃~22℃","tempF1":"84.2℉~73.4℉","tempF2":"78.8℉~68℉","tempF3":"75.2℉~68℉","tempF4":"77℉~68℉","tempF5":"75.2℉~69.8℉","tempF6":"77℉~71.6℉","weather1":"阵雨转中雨","weather2":"中雨转小雨","weather3":"小雨","weather4":"小雨","weather5":"小雨转阵雨","weather6":"阵雨转小雨","img1":"3","img2":"8","img3":"8","img4":"7","img5":"7","img6":"99","img7":"7","img8":"99","img9":"7","img10":"3","img11":"3","img12":"7","img_single":"3","img_title1":"阵雨","img_title2":"中雨","img_title3":"中雨","img_title4":"小雨","img_title5":"小雨","img_title6":"小雨","img_title7":"小雨","img_title8":"小雨","img_title9":"小雨","img_title10":"阵雨","img_title11":"阵雨","img_title12":"小雨","img_title_single":"阵雨","wind1":"微风","wind2":"微风","wind3":"微风","wind4":"微风","wind5":"微风","wind6":"微风","fx1":"微风","fx2":"微风","fl1":"小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级","index":"热","index_d":"天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。","index48":"暖","index48_d":"较凉爽,建议着长袖衬衫加单裤等春秋过渡装。年老体弱者宜着针织长袖衬衫、马甲和长裤。","index_uv":"弱","index48_uv":"最弱","index_xc":"不宜","index_tr":"适宜","index_co":"较不舒适","st1":"27","st2":"21","st3":"24","st4":"18","st5":"22","st6":"18","index_cl":"较不宜","index_ls":"不太适宜","index_ag":"不易发"}}

 

我们可以解析json数据去得到自己想用的天气信息。

天气信息解释:

{
    "weatherinfo":{
        <!-- 基本信息 -->
        "city":"福州",
        "city_en":"fuzhou",
        "date_y":"2012年5月14日",
        "date":"",
        "week":"星期一",
        "fchh":"08",
        "cityid":"101230101",
        <!-- 从今天开始到第六天的每天的天气情况,这里的温度是摄氏温度 -->
        "temp1":"29℃~23℃","temp2":"26℃~20℃","temp3":"24℃~20℃","temp4":"25℃~20℃","temp5":"24℃~21℃","temp6":"25℃~22℃",
        <!-- 从今天开始到第六天的每天的天气情况,这里的温度是华氏温度 -->
        "tempF1":"84.2℉~73.4℉","tempF2":"78.8℉~68℉","tempF3":"75.2℉~68℉","tempF4":"77℉~68℉","tempF5":"75.2℉~69.8℉","tempF6":"77℉~71.6℉",
        <!-- 天气描述 -->
        "weather1":"阵雨转中雨","weather2":"中雨转小雨","weather3":"小雨","weather4":"小雨","weather5":"小雨转阵雨","weather6":"阵雨转小雨",
        <!-- 天气描述图片序号 -->
        "img1":"3","img2":"8","img3":"8","img4":"7","img5":"7","img6":"99","img7":"7","img8":"99","img9":"7","img10":"3","img11":"3","img12":"7","img_single":"3",
        <!-- 图片名称 -->
        "img_title1":"阵雨","img_title2":"中雨","img_title3":"中雨","img_title4":"小雨","img_title5":"小雨","img_title6":"小雨","img_title7":"小雨","img_title8":"小雨","img_title9":"小雨","img_title10":"阵雨","img_title11":"阵雨","img_title12":"小雨","img_title_single":"阵雨",
        <!-- 风速描述 -->
        "wind1":"微风","wind2":"微风","wind3":"微风","wind4":"微风","wind5":"微风","wind6":"微风","fx1":"微风","fx2":"微风",
        <!-- 风速级别描述 -->
        "fl1":"小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级",
        <!-- 今天穿衣指数 -->
        "index":"热",
        "index_d":"天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。",
        <!-- 48小时穿衣指数 -->
        "index48":"暖","index48_d":"较凉爽,建议着长袖衬衫加单裤等春秋过渡装。年老体弱者宜着针织长袖衬衫、马甲和长裤。",
        <!-- 紫外线及48小时紫外线 -->
        "index_uv":"弱","index48_uv":"最弱",
        <!-- 洗车 -->
        "index_xc":"不宜",
        <!-- 旅游 -->
        "index_tr":"适宜",、
        <!-- 舒适指数 -->
        "index_co":"较不舒适",
        "st1":"27","st2":"21","st3":"24","st4":"18","st5":"22","st6":"18",
        <!-- 晨练 -->
        "index_cl":"较不宜",
        <!-- 晾晒 -->
        "index_ls":"不太适宜",
        <!-- 过敏 -->
        "index_ag":"不易发"
    }
}

中国城市代码:

直辖市
    "北京","上海","天津","重庆"
    "101010100","101020100","101030100","101040100"

特别行政区
    "香港","澳门"
    "101320101","101330101"

黑龙江
    "哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭"
    "101050101","101050201","101050301","101050901","101050801","101051301","101051201","101051101","101050401","101051002","101050601","101050501","101050701"
    
吉林
    "长春","延吉","吉林","白山","白城","四平","松原","辽源","大安","通化"
    "101060101","101060301","101060201","101060901","101060601","101060401","101060801","101060701","101060603","101060501"
    
辽宁
    "沈阳","大连","葫芦岛","盘锦","本溪","抚顺","铁岭","辽阳","营口","阜新","朝阳","锦州","丹东","鞍山"
    "101070101","101070201","101071401","101071301","101070501","101070401","101071101","101071001","101070801","101070901","101071201","101070701","101070601","101070301"
    
内蒙古
    "呼和浩特","呼伦贝尔","锡林浩特","包头","赤峰","海拉尔","乌海","鄂尔多斯","通辽"
    "101080101","101081000","101080901","101080201","101080601","101081001","101080301","101080701","101080501"

河北
    "石家庄","唐山","张家口","廊坊","邢台","邯郸","沧州","衡水","承德","保定","秦皇岛"
    "101090101","101090501","101090301","101090601","101090901","101091001","101090701","101090801","101090402","101090201","101091101"
    
河南
    "郑州","开封","洛阳","平顶山","焦作","鹤壁","新乡","安阳","濮阳","许昌","漯河","三门峡","南阳","商丘","信阳","周口","驻马店"
    "101180101","101180801","101180901","101180501","101181101","101181201","101180301","101180201","101181301","101180401","101181501","101181701","101180701","101181001","101180601","101181401","101181601"
    
山东
    "济南","青岛","淄博","威海","曲阜","临沂","烟台","枣庄","聊城","济宁","菏泽","泰安","日照","东营","德州","滨州","莱芜","潍坊"
    "101120101","101120201","101120301","101121301","101120710","101120901","101120501","101121401","101121701","101120701","101121001","101120801","101121501","101121201","101120401","101121101","101121601","101120601"
    
山西
    "太原","阳泉","晋城","晋中","临汾","运城","长治","朔州","忻州","大同","吕梁"
    "101100101","101100301","101100601","101100401","101100701","101100801","101100501","101100901","101101001","101100201","101101101"
    
江苏
    "南京","苏州","昆山","南通","太仓","吴县","徐州","宜兴","镇江","淮安","常熟","盐城","泰州","无锡","连云港","扬州","常州","宿迁"
    "101190101","101190401","101190404","101190501","101190408","101190406","101190801","101190203","101190301","101190901","101190402","101190701","101191201","101190201","101191001","101190601","101191101","101191301"
    
安徽
    "合肥","巢湖","蚌埠","安庆","六安","滁州","马鞍山","阜阳","宣城","铜陵","淮北","芜湖","毫州","宿州","淮南","池州"
    "101220101","101221601","101220201","101220601","101221501","101221101","101220501","101220801","101221401","101221301","101221201","101220301","101220901","101220701","101220401","101221701"
    
陕西
    "西安","韩城","安康","汉中","宝鸡","咸阳","榆林","渭南","商洛","铜川","延安"
    "101110101","101110510","101110701","101110801","101110901","101110200","101110401","101110501","101110601","101111001","101110300"
    
宁夏
    "银川","固原","中卫","石嘴山","吴忠"
    "101170101","101170401","101170501","101170201","101170301"
    
甘肃
    "兰州","白银","庆阳","酒泉","天水","武威","张掖","甘南","临夏","平凉","定西","金昌"
    "101160101","101161301","101160401","101160801","101160901","101160501","101160701","101050204","101161101","101160301","101160201","101160601"
    
青海
    "西宁","海北","海西","黄南","果洛","玉树","海东","海南"
    "101150101","101150801","101150701","101150301","101150501","101150601","101150201","101150401"
    
湖北
    "武汉","宜昌","黄冈","恩施","荆州","神农架","十堰","咸宁","襄阳","孝感","随州","黄石","荆门","鄂州"
"101200101","101200901","101200501","101201001","101200801","101201201","101201101","101200701","101200201","101200401","101201301","101200601","101201401","101200301"
    
湖南
    "长沙","邵阳","常德","郴州","吉首","株洲","娄底","湘潭","益阳","永州","岳阳","衡阳","怀化","韶山","张家界"
    "101250101","101250901","101250601","101250501","101251501","101250301","101250801","101250201","101250701","101251401","101251001","101250401","101251201","101250202","101251101"
    
浙江
    "杭州","湖州","金华","宁波","丽水","绍兴","衢州","嘉兴","台州","舟山","温州"
    "101210101","101210201","101210901","101210401","101210801","101210501","101211001","101210301","101210601","101211101","101210701"
    
江西
    "南昌","萍乡","九江","上饶","抚州","吉安","鹰潭","宜春","新余","景德镇","赣州"
    "101240101","101240901","101240201","101240301","101240401","101240601","101241101","101240501","101241001","101240801","101240701"
    
福建
    "福州","厦门","龙岩","南平","宁德","莆田","泉州","三明","漳州"
    "101230101","101230201","101230701","101230901","101230301","101230401","101230501","101230801","101230601"
    
贵州
    "贵阳","安顺","赤水","遵义","铜仁","六盘水","毕节","凯里","都匀"
    "101260101","101260301","101260208","101260201","101260601","101260801","101260701","101260501","101260401"
    
四川
    "成都","泸州","内江","凉山","阿坝","巴中","广元","乐山","绵阳","德阳","攀枝花","雅安","宜宾","自贡","甘孜州","达州","资阳","广安","遂宁","眉山","南充"
    "101270101","101271001","101271201","101271601","101271901","101270901","101272101","101271401","101270401","101272001","101270201","101271701","101271101","101270301","101271801","101270601","101271301","101270801","101270701","101271501","101270501"
    
广东
    "广州","深圳","潮州","韶关","湛江","惠州","清远","东莞","江门","茂名","肇庆","汕尾","河源","揭阳","梅州","中山","德庆","阳江","云浮","珠海","汕头","佛山"
    "101280101","101280601","101281501","101280201","101281001","101280301","101281301","101281601","101281101","101282001","101280901","101282101","101281201","101281901","101280401","101281701","101280905","101281801","101281401","101280701","101280501","101280800"
    
广西
    "南宁","桂林","阳朔","柳州","梧州","玉林","桂平","贺州","钦州","贵港","防城港","百色","北海","河池","来宾","崇左"
    "101300101","101300501","101300510","101300301","101300601","101300901","101300802","101300701","101301101","101300801","101301401","101301001","101301301","101301201","101300401","101300201"
    
云南
    "昆明","保山","楚雄","德宏","红河","临沧","怒江","曲靖","思茅","文山","玉溪","昭通","丽江","大理"
    "101290101","101290501","101290801","101291501","101290301","101291101","101291201","101290401","101290901","101290601","101290701","101291001","101291401","101290201"
    
海南
    "海口","三亚","儋州","琼山","通什","文昌"
    "101310101","101310201","101310205","101310102","101310222","101310212"
    
新疆
    "乌鲁木齐","阿勒泰","阿克苏","昌吉","哈密","和田","喀什","克拉玛依","石河子","塔城","库尔勒","吐鲁番","伊宁"
    "101130101","101131401","101130801","101130401","101131201","101131301","101130901","101130201","101130301","101131101","101130601","101130501","101131001"
    
西藏
    "拉萨","阿里","昌都","那曲","日喀则","山南","林芝"
    "101140101","101140701","101140501","101140601","101140201","101140301","101140401"
    
台湾
    "台北","高雄"
    "101340102","101340201"

AppCan官网里的一个小例子:

<!DOCTYPE html>
<html class="um landscape min-width-240px min-width-320px min-width-480px min-width-768px min-width-1024px">
  <head>
    <title>
    </title>
    <meta charset="utf-8">
    <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <link rel="stylesheet" href="css/ui-base.css">
    <link rel="stylesheet" href="css/ui-box.css">
    <link rel="stylesheet" href="css/ui-color.css">
    <link rel="stylesheet" href="css/ui-res.css">
    <script src="js/zy_control.js">
    </script>
    <script src="js/zy_click.js">
    </script>
    <script src="js/zy_json.js">
    </script>
    <script src="js/zy_tmpl.js">
    </script>
  </head>
<body class="c-bla ufm"  ontouchstart >
    <div class="up uinn6">
    <div class="uba2 b-gra1 uc-a c-blu4 umh4 uof uts" id="weather">
        <div class="umh8 uc-t ub ">
            <div class="ufw-b ub-f1 ub ub-ver ub-pe">
                <div class="ulev2 t-wh">北京</div>
                <div class="ulev-1 t-blu1">六天天气预报</div>
            </div>
            <div class="t-wh ulev3 ub"><div class="ub ub-ae"></div><div class="ulev-2 ub ub-ac"></div></div>
        </div>
        <div class="ub c-blu3 umh4 ub-ac t-wh">

        </div>        
        <div class="ub  umh4 ub-ac t-wh">

        </div>    
        <div class="ub c-blu3 umh4 ub-ac t-wh">

        </div>    
        <div class="ub  umh4 ub-ac t-wh">

        </div>    
        <div class="ub c-blu3 umh4 ub-ac t-wh">

        </div>    
        <div class="ub  umh4 ub-ac t-wh">

        </div>    
        <div class="ub umh4 uc-b">
        </div>
    </div>
    </div>
</body>
<script>
var url="http://m.weather.com.cn/data/101010100.html";
zy_init();
window.uexOnload=function(type)
{
    if(!type){
        uexWindow.setBounce("1");
        uexWindow.showBounceView("0","#000","0");
        uexWindow.showBounceView("1","#000","0");
        loadWeather();
    }
}

function refresh()
{
    $.clearLS(url);
    loadWeather();
}
/*界面模板*/
var tmpl='<div class="umh8 uc-t ub ubb1 b-gra2">'
            +'<div class="ufw-b ub-f1 ub ub-ver ub-pe">'
            +'    <div class="ulev2 t-wh">${city}</div>'
                +'<div class="ulev-1 t-blu1">六天天气预报</div>'
            +'</div>'
            +'<div class="t-wh ulev3 ub"><div class="ub ub-ae"></div></div>'
        +'</div>'
        +'<div class="ub c-blu3 umh4 ub-ac t-wh ubb1 b-gra2">'
            +'<div class="ufw-b umar-l">${cb:date_y:0}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp1}</div>'
        +'</div>        '
        +'<div class="ub  umh4 ub-ac t-wh ubb1 b-gra2">'
            +'<div class="ufw-b umar-l">${cb:date_y:1}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp2}</div>'
        +'</div>    '
        +'<div class="ub c-blu3 umh4 ub-ac t-wh ubb1 b-gra2">'
            +'<div class="ufw-b umar-l">${cb:date_y:2}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp3}</div>'
        +'</div>    '
        +'<div class="ub  umh4 ub-ac t-wh ubb1 b-gra2">'
            +'<div class="ufw-b umar-l">${cb:date_y:3}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp4}</div>'
        +'</div>    '
        +'<div class="ub c-blu3 umh4 ub-ac t-wh ubb1 b-gra2">'
            +'<div class="ufw-b umar-l">${cb:date_y:4}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp5}</div>'
        +'</div>'    
        +'<div class="ub  umh4 ub-ac t-wh">'
            +'<div class="ufw-b umar-l">${cb:date_y:5}</div>'
            +'<div class="ub-f1"></div>'
            +'<div class="ufw-b ulev1 umar-r">${temp6}</div>'
        +'</div>    '
        +'<div class="ub umh4 uc-b">'
        +'</div>';
var dateStr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
function loadWeather()
{
    /*判断当前日期是否大于天气预报日期,如果大于清除上次的缓存*/
    if (window.localStorage["date"]) {
        var t = window.localStorage["date"].split(/(.*)年(.*)月(.*)日/);
        var dt = new Date(t[1], t[2] - 1, t[3]);//天气预报日期
        var cd = new Date();//当前日期
        if (cd.toDateString() != dt.toDateString()) {//比较日期。我们认为当前日期应该永远大于等于返回日期。因此不等于时就是大于。
            $clearLS(url);//清除离线缓存
        }
    }
    $.getJSON(url,function(data)
            {
                window.localStorage["date"]=data.weatherinfo.date_y;//保存天气预报日期。用于下次更新前判断是否过期
                var t=data.weatherinfo.date_y.split(/(.*)年(.*)月(.*)日/);
                var s=zy_tmpl_s(tmpl,data.weatherinfo,function(a,b)
                {
                    var ar=b[1].split(":");
                    switch(ar[0])
                    {
                        case "date_y":
                            var dt=new Date(t[1],t[2]-1,t[3]);
                                dt=new Date(dt.valueOf()+(int(ar[1])*24*3600*1000));//根据模板中设定的值来计算当前条目的星期数
                                return dateStr[dt.getDay()];//获取星期n的字符串
                        break;
                    }
                });
                $$("weather").innerHTML=s;
            },"json",
            function(e)
            {
                
            },"GET","",true);
}
</script>
</html>
View Code

 

posted @ 2014-05-07 17:31  Liu66~  阅读(4455)  评论(1编辑  收藏  举报