【转载自】https://www.cnblogs.com/wangjingblogs/p/3192953.html
国家气象局提供的天气预报接口
接口地址:
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
对于第三个接口,返回信息比较全面,也是以json格式提供,格式如下
{"weatherinfo": {
//基本信息;
"city":"北京","city_en":"beijing",
"date_y":"2012年2月16日",
"date":"", "week":"星期四",
"fchh":"11",
"cityid":"101010100",
//摄氏温度
"temp1":"2℃~-7℃",
"temp2":"1℃~-7℃",
"temp3":"4℃~-7℃",
"temp4":"7℃~-5℃",
"temp5":"5℃~-3℃",
"temp6":"5℃~-2℃",
//华氏温度;
"tempF1":"35.6℉~19.4℉"
, "tempF2":"33.8℉~19.4℉",
"tempF3":"39.2℉~19.4℉"
, "tempF4":"44.6℉~23℉",
"tempF5":"41℉~26.6℉",
"tempF6":"41℉~28.4℉",
//天气描述;
"weather1":"晴",
"weather2":"晴",
"weather3":"晴",
"weather4":"晴转多云",
"weather5":"多云",
"weather6":"多云转阴",
//天气描述图片序号
"img1":"0",
"img2":"99",
"img3":"0",
"img4":"99",
"img5":"0",
"img6":"99",
"img7":"0",
"img8":"1",
"img9":"1",
"img10":"99",
"img11":"1",
"img12":"2",
"img_single":"0",
//图片名称;
"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":"北风3-4级转微风",
"wind2":"微风",
"wind3":"微风",
"wind4":"微风",
"wind5":"微风",
"wind6":"微风",
//风速级别描述
"fx1":"北风",
"fx2":"微风",
"fl1":"3-4级转小于3级",
"fl2":"小于3级",
"fl3":"小于3级",
"fl4":"小于3级",
"fl5":"小于3级",
"fl6":"小于3级",
//今天穿衣指数;
"index":"冷",
"index_d":"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。",
//48小时穿衣指数
"index48":"冷",
"index48_d":"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。",
//紫外线及48小时紫外线
"index_uv":"弱",
"index48_uv":"弱",
//洗车
"index_xc":"适宜",
//旅游
"index_tr":"一般",
//舒适指数
"index_co":"较不舒适",
"st1":"1",
"st2":"-8",
"st3":"2",
"st4":"-4",
"st5":"5",
"st6":"-5",
//晨练
"index_cl":"较不宜",
//晾晒
"index_ls":"基本适宜",
//过敏
"index_ag":"极不易发"
}
}
1. XML接口
http://flash.weather.com.cn/wmaps/xml/china.xml 这个是全国天气的根节点,列出所有的省,其中的pyName字段是各个省XML的文件名,比如北京的是beijing,那就意味着北京的XML地址为 http://flash.weather.com.cn/wmaps/xml/beijing.xml 一个省的天气,其中列出该省各个市的数据,北京就列出各个区。 tmp1是最低温低,tmp2是最高温度,url非常重要,我们一会儿再说。state1和state2是神马转神马,每个数代表一个天气现象。天气现象非常多,我本想全部分析出来,后来直接放弃了这个想法。因为我看到了一个城市的天气现象的编码是26...我现在知道的有0.晴 1.多云 2.阴 6.雨夹雪 7.小雨 8.中雨 13.阵雪 14.小雪 其中后来发现知道这个没用,这个数字的主要作用是检索图片的!!!
2. 图片接口
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
这个图就是天气现象0(晴)的图片,其他天气现象的图片依此类推。
c打头的图片是20*20像素的,
b打头的是50*46像素的,
d打头的是反白的图标,29*20像素,
n打头的是夜间反白图标,29*20像素,
注意这里的文件名是两位数字! 也许还有更多的图标,等待大家发掘啦~
3. JSON接口
真没想到~居然有JSON接口~JSON在iPhone上分析起来要比XML简单很多
http://m.weather.com.cn/data/101010200.html 这个是北京的JSON数据,
那个HTML的名字是根据上文XML中的url得到的。这个JSON中包含了实时数据、7天天气预报、气象指数等丰富的数据
获取省级代码:
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 获取到安徽省安庆市望江县的代码是220607 然后去加上中国代码请求URL:http://m.weather.com.cn/data/101220607.html 就可以获取当地天气。
另外再给几个有用的探索得到的URL: 天气 FLASH实况:http://flash.weather.com.cn/sk2/101220607.xml 实况FLASH:http://flash.weather.com.cn/sk2/shikuang.swf?id=101220607
三级选择菜单(注明,这里有四个INPUT,其中有一个被隐藏了,可用FIREFOX改下源代码查看):http://www.weather.com.cn/static/custom/search3.htm 实时天气(很有用哦):http://www.weather.com.cn/data/sk/101220607.html
全国各城市代码如下:
北京: 101010100
朝阳: 101010300
顺义: 101010400
怀柔: 101010500
通州: 101010600
昌平: 101010700
延庆: 101010800
丰台: 101010900
石景山: 101011000
大兴: 101011100
房山: 101011200
密云: 101011300
门头沟: 101011400
平谷: 101011500
八达岭: 101011600
佛爷顶: 101011700
汤河口: 101011800
密云上甸子: 101011900
斋堂: 101012000
霞云岭: 101012100
北京城区: 101012200
海淀: 101010200
天津: 101030100
宝坻: 101030300
东丽: 101030400
西青: 101030500
北辰: 101030600
蓟县: 101031400
汉沽: 101030800
静海: 101030900
津南: 101031000
塘沽: 101031100
大港: 101031200
武清: 101030200
宁河: 101030700
上海: 101020100
宝山: 101020300
嘉定: 101020500
南汇: 101020600
浦东: 101021300
青浦: 101020800
松江: 101020900
奉贤: 101021000
崇明: 101021100
徐家汇: 101021200
闵行: 101020200
金山: 101020700
石家庄: 101090101
张家口: 101090301
承德: 101090402
唐山: 101090501
秦皇岛: 101091101
沧州: 101090701
衡水: 101090801
邢台: 101090901
邯郸: 101091001
保定: 101090201
廊坊: 101090601
郑州: 101180101
新乡: 101180301
许昌: 101180401
平顶山: 101180501
信阳: 101180601
南阳: 101180701
开封: 101180801
洛阳: 101180901
商丘: 101181001
焦作: 101181101
鹤壁: 101181201
濮阳: 101181301
周口: 101181401
漯河: 101181501
驻马店: 101181601
三门峡: 101181701
济源: 101181801
安阳: 101180201
合肥: 101220101
芜湖: 101220301
淮南: 101220401
马鞍山: 101220501
安庆: 101220601
宿州: 101220701
阜阳: 101220801
亳州: 101220901
黄山: 101221001
滁州: 101221101
淮北: 101221201
铜陵: 101221301
宣城: 101221401
六安: 101221501
巢湖: 101221601
池州: 101221701
蚌埠: 101220201
杭州: 101210101
舟山: 101211101
湖州: 101210201
嘉兴: 101210301
金华: 101210901
绍兴: 101210501
台州: 101210601
温州: 101210701
丽水: 101210801
衢州: 101211001
宁波: 101210401
重庆: 101040100
合川: 101040300
南川: 101040400
江津: 101040500
万盛: 101040600
渝北: 101040700
北碚: 101040800
巴南: 101040900
长寿: 101041000
黔江: 101041100
万州天城: 101041200
万州龙宝: 101041300
涪陵: 101041400
开县: 101041500
城口: 101041600
云阳: 101041700
巫溪: 101041800
奉节: 101041900
巫山: 101042000
潼南: 101042100
垫江: 101042200
梁平: 101042300
忠县: 101042400
石柱: 101042500
大足: 101042600
荣昌: 101042700
铜梁: 101042800
璧山: 101042900
丰都: 101043000
武隆: 101043100
彭水: 101043200
綦江: 101043300
酉阳: 101043400
秀山: 101043600
沙坪坝: 101043700
永川: 101040200
福州: 101230101
泉州: 101230501
漳州: 101230601
龙岩: 101230701
晋江: 101230509
南平: 101230901
厦门: 101230201
宁德: 101230301
莆田: 101230401
三明: 101230801
兰州: 101160101
平凉: 101160301
庆阳: 101160401
武威: 101160501
金昌: 101160601
嘉峪关: 101161401
酒泉: 101160801
天水: 101160901
武都: 101161001
临夏: 101161101
合作: 101161201
白银: 101161301
定西: 101160201
张掖: 101160701
广州: 101280101
惠州: 101280301
梅州: 101280401
汕头: 101280501
深圳: 101280601
珠海: 101280701
佛山: 101280800
肇庆: 101280901
湛江: 101281001
江门: 101281101
河源: 101281201
清远: 101281301
云浮: 101281401
潮州: 101281501
东莞: 101281601
中山: 101281701
阳江: 101281801
揭阳: 101281901
茂名: 101282001
汕尾: 101282101
韶关: 101280201
南宁: 101300101
柳州: 101300301
来宾: 101300401
桂林: 101300501
梧州: 101300601
防城港: 101301401
贵港: 101300801
玉林: 101300901
百色: 101301001
钦州: 101301101
河池: 101301201
北海: 101301301
崇左: 101300201
贺州: 101300701
贵阳: 101260101
安顺: 101260301
都匀: 101260401
兴义: 101260906
铜仁: 101260601
毕节: 101260701
六盘水: 101260801
遵义: 101260201
凯里: 101260501
昆明: 101290101
红河: 101290301
文山: 101290601
玉溪: 101290701
楚雄: 101290801
普洱: 101290901
昭通: 101291001
临沧: 101291101
怒江: 101291201
香格里拉: 101291301
丽江: 101291401
德宏: 101291501
景洪: 101291601
大理: 101290201
曲靖: 101290401
保山: 101290501
呼和浩特: 101080101
乌海: 101080301
集宁: 101080401
通辽: 101080501
阿拉善左旗: 101081201
鄂尔多斯: 101080701
临河: 101080801
锡林浩特: 101080901
呼伦贝尔: 101081000
乌兰浩特: 101081101
包头: 101080201
赤峰: 101080601
南昌: 101240101
上饶: 101240301
抚州: 101240401
宜春: 101240501
鹰潭: 101241101
赣州: 101240701
景德镇: 101240801
萍乡: 101240901
新余: 101241001
九江: 101240201
吉安: 101240601
武汉: 101200101
黄冈: 101200501
荆州: 101200801
宜昌: 101200901
恩施: 101201001
十堰: 101201101
神农架: 101201201
随州: 101201301
荆门: 101201401
天门: 101201501
仙桃: 101201601
潜江: 101201701
襄樊: 101200201
鄂州: 101200301
孝感: 101200401
黄石: 101200601
咸宁: 101200701
成都: 101270101
自贡: 101270301
绵阳: 101270401
南充: 101270501
达州: 101270601
遂宁: 101270701
广安: 101270801
巴中: 101270901
泸州: 101271001
宜宾: 101271101
内江: 101271201
资阳: 101271301
乐山: 101271401
眉山: 101271501
凉山: 101271601
雅安: 101271701
甘孜: 101271801
阿坝: 101271901
德阳: 101272001
广元: 101272101
攀枝花: 101270201
银川: 101170101
中卫: 101170501
固原: 101170401
石嘴山: 101170201
吴忠: 101170301
西宁: 101150101
黄南: 101150301
海北: 101150801
果洛: 101150501
玉树: 101150601
海西: 101150701
海东: 101150201
海南: 101150401
济南: 101120101
潍坊: 101120601
临沂: 101120901
菏泽: 101121001
滨州: 101121101
东营: 101121201
威海: 101121301
枣庄: 101121401
日照: 101121501
莱芜: 101121601
聊城: 101121701
青岛: 101120201
淄博: 101120301
德州: 101120401
烟台: 101120501
济宁: 101120701
泰安: 101120801
西安: 101110101
延安: 101110300
榆林: 101110401
铜川: 101111001
商洛: 101110601
安康: 101110701
汉中: 101110801
宝鸡: 101110901
咸阳: 101110200
渭南: 101110501
太原: 101100101
临汾: 101100701
运城: 101100801
朔州: 101100901
忻州: 101101001
长治: 101100501
大同: 101100201
阳泉: 101100301
晋中: 101100401
晋城: 101100601
吕梁: 101101100
乌鲁木齐: 101130101
石河子: 101130301
昌吉: 101130401
吐鲁番: 101130501
库尔勒: 101130601
阿拉尔: 101130701
阿克苏: 101130801
喀什: 101130901
伊宁: 101131001
塔城: 101131101
哈密: 101131201
和田: 101131301
阿勒泰: 101131401
阿图什: 101131501
博乐: 101131601
克拉玛依: 101130201
拉萨: 101140101
山南: 101140301
阿里: 101140701
昌都: 101140501
那曲: 101140601
日喀则: 101140201
林芝: 101140401
台北县: 101340101
高雄: 101340201
台中: 101340401
海口: 101310101
三亚: 101310201
东方: 101310202
临高: 101310203
澄迈: 101310204
儋州: 101310205
昌江: 101310206
白沙: 101310207
琼中: 101310208
定安: 101310209
屯昌: 101310210
琼海: 101310211
文昌: 101310212
保亭: 101310214
万宁: 101310215
陵水: 101310216
西沙: 101310217
南沙岛: 101310220
乐东: 101310221
五指山: 101310222
琼山: 101310102
长沙: 101250101
株洲: 101250301
衡阳: 101250401
郴州: 101250501
常德: 101250601
益阳: 101250700
娄底: 101250801
邵阳: 101250901
岳阳: 101251001
张家界: 101251101
怀化: 101251201
黔阳: 101251301
永州: 101251401
吉首: 101251501
湘潭: 101250201
南京: 101190101
镇江: 101190301
苏州: 101190401
南通: 101190501
扬州: 101190601
宿迁: 101191301
徐州: 101190801
淮安: 101190901
连云港: 101191001
常州: 101191101
泰州: 101191201
无锡: 101190201
盐城: 101190701
哈尔滨: 101050101
牡丹江: 101050301
佳木斯: 101050401
绥化: 101050501
黑河: 101050601
双鸭山: 101051301
伊春: 101050801
大庆: 101050901
七台河: 101051002
鸡西: 101051101
鹤岗: 101051201
齐齐哈尔: 101050201
大兴安岭: 101050701
长春: 101060101
延吉: 101060301
四平: 101060401
白山: 101060901
白城: 101060601
辽源: 101060701
松原: 101060801
吉林: 101060201
通化: 101060501
沈阳: 101070101
鞍山: 101070301
抚顺: 101070401
本溪: 101070501
丹东: 101070601
葫芦岛: 101071401
营口: 101070801
阜新: 101070901
辽阳: 101071001
铁岭: 101071101
朝阳: 101071201
盘锦: 101071301
大连: 101070201
锦州: 101070701