中国天气网AIP:http://smart.weather.com.cn/wzfw/smart/index.shtml
转自:http://blog.163.com/yuanzhf_2012/blog/static/2112011482012929454663/
谷歌的天气预报的
优点在于可以直接获取支持查询天气的国家和城市。并且可以预报4天天气,支持经纬度查询天气(这个可以利用GPS做应用)。
缺点也是惊人的:支持的中国城市比较少。
雅虎的天气预报返回的是xml数据,我需要的是json数据,所以也没什么好感。
最终还是决定使用中央气象台的。中央喔,好像很牛B的样子。
该api获取天气的接口如下:
http://www.weather.com.cn/data/sk/101281601.html
http://www.weather.com.cn/data/cityinfo/101281601.html
http://m.weather.com.cn/data/101281601.html
http://www.weather.com.cn/data/cityinfo/101281601.html
http://m.weather.com.cn/data/101281601.html
3种返回的数据稍微有些不同,至于使用哪一种,看个人喜欢吧~~
值得说明的是101281601是城市在中央气象台数据库中城市码,获取的方法有些麻烦,有以下几个步骤:
1. 通过
http://m.weather.com.cn/data5/city.xml 获取省份列表;
2. 通过
http://m.weather.com.cn/data5/city28.xml 获取该省份的城市列表,其中28为广东省代号,1中所返回的;
3. 通过
http://m.weather.com.cn/data5/city
2816
.xml 获取该城市的区列表,其中2816为东莞市代号,2中所返回的;
4. 通过
http://m.weather.com.cn/data5/city
281601
.xml 获取最后的城市码,其中281601为3中返回;
5. 通过 api获取天气信息;
值得注意的使,上述的这些列表信息虽然文件后缀名未xml,但是里面只是一条字符串,不符合xml的格式,所以,直接用浏览器打开,会显示xml解释出错。。。。
现在需要做的是获取所有城市的城市码,csdn其实有人上传了,不过俺是穷人,下载不了。所以只能自己获取。。。想了一下,其实挺简单的,写个脚本遍历一下所有城市码并存入数据库或者写到文件就行了。
下面是我用php写的脚本:




然后在终端或者浏览器执行就可以了。
受到网速的影响,数据获取过程可能有点慢。
我的mysql数据库备份已经放到163公共邮箱:
账号:forecast_weather@163.com
密码:weather
不想自己获取数据的娃,直接下载吧。。。
