目录:
1. 中国天气网
1.1 实时天气 API 接口
1.2 当天天气 API接口
1.3 生活指数 API接口
1.4 未来五天天气 API 接口(失效)
2. 开放数据网天气
2.1 简介
2.2. 一天天气 API 接口
2.3 未来五天天气 API 接口
3. 中国天气&开放数据 综合版
3.1 实时天气
3.2 当天天气
3.3 未来五天
3.4 生活指数
4. 随身云天气API (无天气标志)
4.1 简介
4.1 简化版 未来6天天气 API接口
4.2 详细版 未来6天 天气API接口
5. 新浪天气
5. 1 简介
5.2 使用方法
5.3 天气标志
6. 总结
正文:
第一节: 中国天气网
1.1 简介
中国最权威的天气预报网络平台,很多平台实际上也是用的他们的数据。
官方网站:http://www.weather.com.cn
1.2 地方代码获取方法
它对外提供了有限的免费API接口,通过地方代码来查询,使用前先需要确定地方代码:
获取城市代码方法: 进入 http://www.weather.com.cn
在搜索框上输入你要需要获得天气的城市,点击查询,即可在地址栏获得相应城市编号,示范:北京的地方代码:101010100
1.3 实时天气接口
接口示例: http://www.weather.com.cn/data/sk/101010100.html
返回格式:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"23","WD":"东风","WS":"2级","SD":"92%","WSE":"2","time":"09:55","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}
说明:其中 city 是地方名称,cityid是地方代码,temp是当前温度,"WD"是风向,“WS"是风速”,“SD"是湿度,time是更新时间。
1.4 获取当天天气:
http://www.weather.com.cn/data/cityinfo/101010100.html
返回格式:
weatherinfo":{"city":"北京","cityid":"101010100","temp1":"29℃","temp2":"24℃","weather":"阴转晴","img1":"d2.gif","img2":"n0.gif","ptime":"08:00"}}
注意:其中 img1和img2是天气标志图片,接口格式如下:
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像素,注意这里的文件名是两位数字!
1.5 生活指数:
http://www.weather.com.cn/data/zs/101010100.html
返回格式: 文字较多,这里省略,请点击访问。
1.6 获取未来几天天气
http://m.weather.com.cn/data/101110101.html(已经失效)
这个是获取未来5天天气的接口,可惜已经失效,不能获取到最新的准确数据。
解决方法是可以采集主站数据,缺点是一旦主页布局修改,就会失效,比如 2014年7月29号网站就改版过一次。
2. 开放数据 - k780数据
2.1 简介
官方网站:http://www.k780.com
说明: 数据来自国家气象局天气网,每小时更新一次
免费版有每小时点击次数的限制(免费版最多每小时72000次查询)
2.2 获取今日天气
详细说明: http://www.k780.com/api/weather.today
请求示例(xml)
返回实例:
<?xml version="1.0" encoding="utf-8" ?>
- <root>
<success>1</success>
- <result>
<weaid>1</weaid>
<days>2014-07-30</days>
<week>星期三</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>29℃/24℃</temperature>
<humidity>84.2℉/75.2℉</humidity>
<weather>阴转晴</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/2.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>29</temp_high>
<temp_low>24</temp_low>
<humi_high>84.2</humi_high>
<humi_low>75.2</humi_low>
<weatid>3</weatid>
<weatid1>1</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</result>
</root>
参数说明:其中 ,wedid 是城市气象编号,与中国天气网编号一致,key和sign是身份验证,注册一个可以换成自己的,上例中的10003是公众帐号,formt是返回格式,支持 json,xml,除了formt不是必须的以外,其他参数都是必须提供的。
比如 我想获得深圳的今日数据:
第一步: 首先查询深圳的城市代码
方法1:通过 http://api.k780.com:88/?app=weather.city&format=xml 查询
方法2:通过 http://www.weather.com.cn 查询,前面已经提到过。
经查询,深圳的地方代码是 101280601
第二步: 通过地方代码获取今日天气
深圳的今天天气数据就是:
2.3 获取未来五天
请求示例(Xml)
返回示例:
<?xml version="1.0" encoding="utf-8" ?>
- <root>
<success>1</success>
- <result>
- <item_0>
<weaid>1</weaid>
<days>2014-07-30</days>
<week>星期三</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>29℃/24℃</temperature>
<humidity>84.2℉/75.2℉</humidity>
<weather>阴转晴</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/2.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>29</temp_high>
<temp_low>24</temp_low>
<humi_high>84.2</humi_high>
<humi_low>75.2</humi_low>
<weatid>3</weatid>
<weatid1>1</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_0>
- <item_1>
<weaid>1</weaid>
<days>2014-07-31</days>
<week>星期四</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>31℃/24℃</temperature>
<humidity>87.8℉/75.2℉</humidity>
<weather>晴</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>31</temp_high>
<temp_low>24</temp_low>
<humi_high>87.8</humi_high>
<humi_low>75.2</humi_low>
<weatid>1</weatid>
<weatid1>1</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_1>
- <item_2>
<weaid>1</weaid>
<days>2014-08-01</days>
<week>星期五</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>33℃/25℃</temperature>
<humidity>91.4℉/77℉</humidity>
<weather>晴</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>33</temp_high>
<temp_low>25</temp_low>
<humi_high>91.4</humi_high>
<humi_low>77</humi_low>
<weatid>1</weatid>
<weatid1>1</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_2>
- <item_3>
<weaid>1</weaid>
<days>2014-08-02</days>
<week>星期六</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>34℃/24℃</temperature>
<humidity>93.2℉/75.2℉</humidity>
<weather>晴</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>34</temp_high>
<temp_low>24</temp_low>
<humi_high>93.2</humi_high>
<humi_low>75.2</humi_low>
<weatid>1</weatid>
<weatid1>1</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_3>
- <item_4>
<weaid>1</weaid>
<days>2014-08-03</days>
<week>星期日</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>33℃/25℃</temperature>
<humidity>91.4℉/77℉</humidity>
<weather>晴转多云</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/0.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/1.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>33</temp_high>
<temp_low>25</temp_low>
<humi_high>91.4</humi_high>
<humi_low>77</humi_low>
<weatid>1</weatid>
<weatid1>2</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_4>
- <item_5>
<weaid>1</weaid>
<days>2014-08-04</days>
<week>星期一</week>
<cityno>beijing</cityno>
<citynm>北京</citynm>
<cityid>101010100</cityid>
<temperature>33℃/25℃</temperature>
<humidity>91.4℉/77℉</humidity>
<weather>多云</weather>
<weather_icon>http://api.k780.com:88/upload/weather/d/1.gif</weather_icon>
<weather_icon1>http://api.k780.com:88/upload/weather/d/1.gif</weather_icon1>
<wind>微风</wind>
<winp>小于3级</winp>
<temp_high>33</temp_high>
<temp_low>25</temp_low>
<humi_high>91.4</humi_high>
<humi_low>77</humi_low>
<weatid>2</weatid>
<weatid1>2</weatid1>
<windid>1</windid>
<winpid>2</winpid>
</item_5>
</result>
</root>
转换方法与前面类似,这里就不需要重复了。
3. 综合方案
3. 1 实时天气
我们用 : http://www.weather.com.cn/data/sk/101010100.html
3.2 今天天气
2个选择:
1. http://www.weather.com.cn/data/cityinfo/101010100.html
3.3 未来几天天气
今天天气及未来五天天气 :
3.4 生活指数
http://www.weather.com.cn/data/zs/101010100.html
4. 随身云 天气API接口
4.1 简介
这个是官方没有公开的接口,是网络上有人访问中国农历网无意中截取到的,所以不保证稳定性,还有一个缺点是不能获取天气标志图片。
4.2 简化版接口
接口示例(北京): http://wthrcdn.etouch.cn/weather_mini?citykey=101010100
参数citykey就是设置地方代码,和中国天气网的地方代码一样,替换要查询的地方代码即可,下同。
返回示例:
{"desc":"OK","status":1000,"data":{"wendu":"28","ganmao":"相对今天出现了较大幅度降温,较易发生感冒,体质较弱的朋友请注意适当防护。","forecast":[{"fengxiang":"微风","fengli":"小于3级","high":"高温 29℃","type":"阴","low":"低温 24℃","date":"30日星期三"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 31℃","type":"晴","low":"低温 24℃","date":"31日星期四"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 33℃","type":"晴","low":"低温 25℃","date":"1日星期五"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 34℃","type":"晴","low":"低温 24℃","date":"2日星期六"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 33℃","type":"晴","low":"低温 25℃","date":"3日星期天"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 33℃","type":"多云","low":"低温 25℃","date":"4日星期一"},{"fengxiang":"微风","fengli":"小于3级","high":"高温 33℃","type":"多云","low":"低温 25℃","date":"5日星期二"}],"yesterday":{"fl":"小于3级","fx":"微风","high":"高温 29℃","type":"中雨","low":"低温 22℃","date":"29日星期二"},"aqi":"186","city":"北京"}}
2. 详细版接口
接口示例: http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100
返回示例:
- <?xml version="1.0" encoding="UTF-8" ?>
- - <resp>
- <city>北京</city>
- <updatetime>16:05</updatetime>
- <wendu>28</wendu>
- <fengli>2级</fengli>
- <shidu>66%</shidu>
- <fengxiang>东风</fengxiang>
- <sunrise_1>05:10</sunrise_1>
- <sunset_1>19:31</sunset_1>
- <sunrise_2 />
- <sunset_2 />
- - <environment>
- <aqi>186</aqi>
- <pm25>140</pm25>
- <suggest>...适量减少户外运动</suggest>
- <quality>中度污染</quality>
- <MajorPollutants>颗粒物(PM2.5)</MajorPollutants>
- <o3>142</o3>
- <co>2</co>
- <pm10>0</pm10>
- <so2>4</so2>
- <no2>24</no2>
- <time>15:00:00</time>
- </environment>
- - <yesterday>
- <date_1>29日星期二</date_1>
- <high_1>高温 29℃</high_1>
- <low_1>低温 22℃</low_1>
- - <day_1>
- <type_1>中雨</type_1>
- <fx_1>微风</fx_1>
- <fl_1>小于3级</fl_1>
- </day_1>
- - <night_1>
- <type_1>中雨</type_1>
- <fx_1>微风</fx_1>
- <fl_1>小于3级</fl_1>
- </night_1>
- </yesterday>
- - <forecast>
- - <weather>
- <date>30日星期三</date>
- <high>高温 29℃</high>
- <low>低温 24℃</low>
- - <day>
- <type>阴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>31日星期四</date>
- <high>高温 31℃</high>
- <low>低温 24℃</low>
- - <day>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>1日星期五</date>
- <high>高温 33℃</high>
- <low>低温 25℃</low>
- - <day>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>2日星期六</date>
- <high>高温 34℃</high>
- <low>低温 24℃</low>
- - <day>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>3日星期天</date>
- <high>高温 33℃</high>
- <low>低温 25℃</low>
- - <day>
- <type>晴</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>多云</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>4日星期一</date>
- <high>高温 33℃</high>
- <low>低温 25℃</low>
- - <day>
- <type>多云</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>多云</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- - <weather>
- <date>5日星期二</date>
- <high>高温 33℃</high>
- <low>低温 25℃</low>
- - <day>
- <type>多云</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </day>
- - <night>
- <type>多云</type>
- <fengxiang>微风</fengxiang>
- <fengli>小于3级</fengli>
- </night>
- </weather>
- </forecast>
- - <zhishus>
- - <zhishu>
- <name>感冒指数</name>
- <value>较易发</value>
- <detail>较易发生感冒,体质较弱的朋友请注意适当防护。</detail>
- </zhishu>
- - <zhishu>
- <name>紫外线指数</name>
- <value>弱</value>
- <detail>紫外线强度较弱。</detail>
- </zhishu>
- - <zhishu>
- <name>穿衣指数</name>
- <value>热</value>
- <detail>天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。</detail>
- </zhishu>
- - <zhishu>
- <name>舒适度</name>
- <value>较舒适</value>
- <detail>白天以阴或多云天气为主。</detail>
- </zhishu>
- - <zhishu>
- <name>洗车指数</name>
- <value>不宜</value>
- <detail>不宜洗车,路面积水较多,不宜擦洗汽车...</detail>
- </zhishu>
- - <zhishu>
- <name>旅游指数</name>
- <value>适宜</value>
- <detail>天气较好,温度适宜,总体来说还是好天气哦...</detail>
- </zhishu>
- - <zhishu>
- <name>运动指数</name>
- <value>较不宜</value>
- <detail>阴天,且天气较热,请减少运动时间并降低运动强度。</detail>
- </zhishu>
- - <zhishu>
- <name>晨练指数</name>
- <value>较适宜</value>
- <detail>早晨气象条件较适宜晨练...</detail>
- </zhishu>
- - <zhishu>
- <name>约会指数</name>
- <value>较适宜</value>
- <detail>虽然天空有些阴沉,但情侣们可以放心外出...</detail>
- </zhishu>
- - <zhishu>
- <name>逛街指数</name>
- <value>适宜</value>
- <detail>阴天,在这种天气里去逛街,省去了涂防晒霜...</detail>
- </zhishu>
- - <zhishu>
- <name>晾晒指数</name>
- <value>不太适宜</value>
- <detail>天气阴沉,请尽量选择通风的地点。</detail>
- </zhishu>
- - <zhishu>
- <name>雨伞指数</name>
- <value>不带伞</value>
- <detail>阴天,但降水概率很低,无须带雨伞。</detail>
- </zhishu>
- </zhishus>
- </resp>
- - <!-- 127.0.0.1(127.0.0.1):48457 ; 127.0.0.1:8080
- -->
5. 新浪天气接口
接口示例:
http://php.weather.sina.com.cn/xml.php?city=深圳&password=DJOYnieT8234jlsK&day=0
其中,city后是城市名称。Password固定,Day为0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4
返回示例:
- <?xml version="1.0" encoding="UTF-8" ?>
- - <!--
- published at 2014-07-30 15:18:36
- --> f%28clean%29%3B
- - <Profiles>
- - <Weather>
- <city>深圳</city>
- <status1>多云</status1>
- <status2>多云</status2>
- <figure1>duoyun</figure1>
- <figure2>duoyun</figure2>
- <direction1>无持续风向</direction1>
- <direction2>无持续风向</direction2>
- <power1>≤3</power1>
- <power2>≤3</power2>
- <temperature1>34</temperature1>
- <temperature2>27</temperature2>
- <ssd>8</ssd>
- <tgd1>31</tgd1>
- <tgd2>31</tgd2>
- <zwx>1</zwx>
- <ktk>2</ktk>
- <pollution>3</pollution>
- <xcz>4</xcz>
- <zho />
- <diy />
- <fas />
- <chy>1</chy>
- <zho_shuoming>暂无</zho_shuoming>
- <diy_shuoming>暂无</diy_shuoming>
- <fas_shuoming>暂无</fas_shuoming>
- <chy_shuoming>短袖衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫</chy_shuoming>
- <pollution_l>轻度</pollution_l>
- <zwx_l>最弱</zwx_l>
- <ssd_l>较热</ssd_l>
- <fas_l>暂无</fas_l>
- <zho_l>暂无</zho_l>
- <chy_l>薄短袖类</chy_l>
- <ktk_l>适宜开启(制冷)</ktk_l>
- <xcz_l>不太适宜</xcz_l>
- <diy_l>暂无</diy_l>
- <pollution_s>对空气污染物扩散无明显影响</pollution_s>
- <zwx_s>紫外线最弱</zwx_s>
- <ssd_s>户外活动不适宜在中午前后展开。</ssd_s>
- <ktk_s>适宜开启空调</ktk_s>
- <xcz_s>洗车后未来1-2天内有降水、大风或沙尘天气,不太适宜洗车</xcz_s>
- <gm>2</gm>
- <gm_l>易发期</gm_l>
- <gm_s>天气闷热,注意预防热伤风;</gm_s>
- <yd>5</yd>
- <yd_l>不适宜</yd_l>
- <yd_s>天气闷热,不适宜户外运动;</yd_s>
- <savedate_weather>2014-07-30</savedate_weather>
- <savedate_life>2014-07-30</savedate_life>
- <savedate_zhishu>2014-07-30</savedate_zhishu>
- </Weather>
- </Profiles>
图片格式:
figure1和figure2标签分别代表天气的白天和夜间标志,根据下面的规则转换为具体的路径:
多云的78*78 小图:
白天: http://php.weather.sina.com.cn/images/yb3/78_78/duoyun_0.png
夜间: http://php.weather.sina.com.cn/images/yb3/78_78/duoyun_1.png
多云的 180*180 大图:
白天:http://php.weather.sina.com.cn/images/yb3/180_180/duoyun_0.png
夜间:http://php.weather.sina.com.cn/images/yb3/180_180/duoyun_1.png
云聚: http://api.36wu.com
实时天气:http://api.36wu.com/Weather/GetWeather?city=%E5%8C%97%E4%BA%AC&output=xml
一周天气: http://api.36wu.com/Weather/GetMoreWeather?city=%E5%8C%97%E4%BA%AC&output=xml
智能IP一周: http://api.36wu.com/Weather/GetMoreWeatherByIp?city=%E5%8C%97%E4%BA%AC&output=xml
原文地址:https://www.cnblogs.com/jueyushanlang/p/8449558.html