Browsed by
月份:2012年1月

关于中国天气(Weather.com.cn)天气查询,谷歌雅虎天气弱爆了

关于中国天气(Weather.com.cn)天气查询,谷歌雅虎天气弱爆了

最近关注了下天气API方面的东西,最初也是从谷歌和雅虎天气入手,说下这两个天气出现的问题,雅虎天气的问题是你获得的数据都是英文,谷歌天气的问题是你查询的时候必须告诉他城市的拼音名或者城市id什么的,不能通过汉字直接查,有一个小发现共享下,搜狐的查ip时返回的城市id,可以直接用于谷歌天气查询,另外貌似公认的谷歌天气不够全面。

好吧,最后我选择了用中国天气(Weather.com.cn),中国天气 这个网站的数据还是非常全面的,还都是中文的。下面是他的数据获取方式:

城市id获取方式:
1. 访问http://m.weather.com.cn/data5/city.xml?level=0,(后面level参数可省略)得到一级列表(省、 直辖市、自治区),结果用逗号隔开,id和城市名称使用竖线“|”隔开;结果示例如下: 01|北京,02|上海,03|天津,04|重庆,05|黑龙江,06|吉林,07|辽宁,08|内蒙古,09|河北,10|山西,11|陕西,12|山 东,13|新疆,14|西藏,15|青海,16|甘肃,17|宁夏…(以下省略)

2. 访问http://m.weather.com.cn/data5/city01.xml?level=1,(后面level参数可省略)得到二级列表。 其中01是一级省市的id,结果格式和上一层相同;

3. 访问http://m.weather.com.cn/data5/city0101.xml?level=2,(后面level参数可省略)得到三级列 表。0101是地级市的id,示例如下(北京): 010101|北京,010102|海淀,010103|朝阳,010104|顺义,010105|怀柔,010106|通州,010107|昌平…(以下省略)

4. 访问http://m.weather.com.cn/data5/city010101.xml?level=3,(后面level参数可省略)得到最 后一级的id,010101是区域的id,示例如下(北京市区): 010101|101010100 ,后面的数字就是获得天气数据需要的城市id,以http://m.weather.com.cn/data/{id}.html格式访问即可得出天气结果。

但是,这个网站也有一个蛋疼的问题,就是 这个网站只在主域名下有crossdomain.xml文件,即http://weather.com.cn/crossdomain.xml ,在m.weather.com.cn却没有,但是这却不影响其他语言访问,使用js或者php之类的都可以访问,既然AS3不能直接访问,就只好用其他语言中转下咯,比如,可以先从AS3访问php,php将访问weather.com.cn获得的数据返回给AS3。

 

延伸阅读:http://7timer.y234.cn/doc.php?lang=zh-CN#api (另一个天气API)