根据中国气象局提供的API接口实现天气查询

中国气象局提供了三个天气查询的API接口:

【1】http://www.weather.com.cn/data/sk/101190101.html

【2】http://www.weather.com.cn/data/cityinfo/101190101.html

【3】http://m.weather.com.cn/data/101190101.html

以json格式返回数据,第一和第二个接口返回当天实时的天气数据,第三个返回未来五天天气情况。

其中地址里的加粗显示的数字表示城市的代码:101190101 代表南京(获取城市代码的方法下面会说明)

第三个接口的返回数据示例及说明如下:

 

 
  1. {   
  2. weatherinfo: {   
  3. city: "南京",   
  4. city_en: "nanjing",   
  5. date_y: "2013年9月8日",   
  6. date: "",   
  7. week: "星期日",   
  8. fchh: "18",   
  9. cityid: "101190101",                     //城市代码   
  10. temp1: "22℃~30℃",                     //第一天(当天)最高喝最低温度(摄氏温度)   
  11. temp2: "23℃~29℃",                     //第二天最高喝最低温度(摄氏温度)   
  12. temp3: "22℃~28℃",                     //第三天最高喝最低温度(摄氏温度)   
  13. temp4: "23℃~30℃",                     //第四天最高喝最低温度(摄氏温度)   
  14. temp5: "24℃~28℃",                     //第五天最高喝最低温度(摄氏温度)   
  15. temp6: "23℃~28℃",                     //第六天最高喝最低温度(摄氏温度)   
  16. tempF1: "71.6℉~86℉",                //第一天(当天)最高喝最低温度(华氏温度)   
  17. tempF2: "73.4℉~84.2℉",             //第二天最高喝最低温度(华氏温度)   
  18. tempF3: "71.6℉~82.4℉",             //第三天最高喝最低温度(华氏温度)   
  19. tempF4: "73.4℉~86℉",                //第四天最高喝最低温度(华氏温度)   
  20. tempF5: "75.2℉~82.4℉",             //第五天最高喝最低温度(华氏温度)   
  21. tempF6: "73.4℉~82.4℉",             //第六天最高喝最低温度(华氏温度)   
  22. weather1: "多云转阴",                    //第一天(当天)天气   
  23. weather2: "小雨",                          //第二天天气   
  24. weather3: "小雨",   
  25. weather4: "阴",   
  26. weather5: "小雨转中雨",   
  27. weather6: "中雨转阴",   
  28. img1: "1",                            //第一天的天气图片代码1   
  29. img2: "2",                            //第一天的天气图片代码2   
  30. img3: "7",                           //第二天的天气图片代码1   
  31. img4: "99",                          //第二天的天气图片代码2   
  32. img5: "7",   
  33. img6: "99",   
  34. img7: "2",   
  35. img8: "99",   
  36. img9: "7",   
  37. img10: "8",   
  38. img11: "8",   
  39. img12: "2",   
  40. img_single: "2"  
  41. img_title1: "多云",                    //第一天的天气图片1的标题   
  42. img_title2: "阴",                       //第一天的天气图片2的标题   
  43. img_title3: "小雨",                    //第二天的天气图片1的标题   
  44. img_title4: "小雨",                    //第二天的天气图片2的标题   
  45. img_title5: "小雨",   
  46. img_title6: "小雨",   
  47. img_title7: "阴",   
  48. img_title8: "阴",   
  49. img_title9: "小雨",   
  50. img_title10: "中雨",   
  51. img_title11: "中雨",   
  52. img_title12: "阴",   
  53. img_title_single: "阴",   
  54. wind1: "东风3-4级",                      //第一天风向范围   
  55. wind2: "东风3-4级",                      //第二天风向范围   
  56. wind3: "北风转东北风3-4级",   
  57. wind4: "东北风3-4级",   
  58. wind5: "东北风转西风3-4级",   
  59. wind6: "西南风转西风3-4级",   
  60. fx1: "东风",   
  61. fx2: "东风",   
  62. fl1: "3-4级",                                     //第一天风级范围                        
  63. fl2: "3-4级",   
  64. fl3: "3-4级",   
  65. fl4: "3-4级",   
  66. fl5: "3-4级",   
  67. fl6: "3-4级",   
  68. index: "热",                                                                                //二十四小时穿衣指数   
  69. index_d: "天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。",  //建议   
  70. index48: "热",                                                                           //四十八小时穿衣指数   
  71. index48_d: "天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。", //建议   
  72. index_uv: "弱",                              //二十四小时紫外线   
  73. index48_uv: "弱",                          //四十八小时紫外线   
  74. index_xc: "不宜",                           //洗车   
  75. index_tr: "适宜",                           //旅游   
  76. index_co: "较舒适",                       //舒适度   
  77. st1: "30",   
  78. st2: "20",   
  79. st3: "27",   
  80. st4: "19",   
  81. st5: "26",   
  82. st6: "18",   
  83. index_cl: "较适宜",                        //晨练   
  84. index_ls: "不太适宜",                     //晾晒   
  85. index_ag: "极易发"                        //过敏   
  86. }   
  87. }  

 

获取城市代码的方法:

1.首先获取省份列表

http://www.weather.com.cn/data/city3jdata/china.html

这个链接以json格式返回一个包含省份代码和省份名称的数组

  1. {   
  2. 10101: "北京",   
  3. 10102: "上海",   
  4. ....   ,
  5. 10119: "江苏",
  6. }  

2.通过上面获得的省份代码获取城市列表:

如江苏的城市代码为:10119,通过下面的链接可以获得江苏省的城市列表

http://www.weather.com.cn/data/city3jdata/provshi/10119.html

 
  1. {   
  2. 10: "连云港",   
  3. 11: "常州",   
  4. ...   
  5. 01: "南京",
  6. }  

3.获取城市下的区域信息

通过上一步可获取城市代码 如:南京为 01

把01接到第一步获得的省份代码后 获得 1011901 代表江苏省南京市

通过下面的链接可获取江苏省南京市的区域信息,加粗部分为刚刚生成的代码

http://www.weather.com.cn/data/city3jdata/station/1011901.html

 
  1. {   
  2. 01: "南京",   
  3. 02: "溧水",   
  4. 03: "高淳",   
  5. 04: "江宁",   
  6. 05: "六合",   
  7. 06: "江浦",   
  8. 07: "浦口"  
  9. }  

4.获取区域代码

把上面获得的区域代码如:01(代表南京市区) 接到第三步获得的江苏省南京市的代码 1011901

得到 101190101 代表江苏省南京市南京市区的代码。

这串代码就是我们需要的。

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

放到这个链接里我们就能获得江苏省南京市南京市区的天气信息啦!

下面提供一个我写好的天气查询工具的演示地址和城市代码对照表的sql文件下载地址。

 

根据中国气象局提供的API接口实现天气查询

上一篇:用过Ubuntu,厌倦了Windows,PC已经快乐地跑起Mac OS X


下一篇:Windows API串口编程