中国天气网API
中国天气网有三个 API 适用于不同场合的使用。
http://m.weather.com.cn/data/101050101.html 这个接口返回的格式如下。
{
    "weatherinfo": {
        "city": "哈尔滨", // 城市中文名
        "city_en": "haerbin", // 城市英文名
        "date_y": "2012年8月18日", // 发布日期
        "date": "", // ?
        "week": "星期六", // 周信息
        "fchh": "18", // 信息发布时的整点小时数(感谢读者 白白乌鸦 的提醒)
        "cityid": "101050101", // 城市ID
        "temp1": "18℃~26℃", // 今日气温
        "temp2": "17℃~29℃", // 明日气温
        "temp3": "18℃~23℃", // 第三日气温
        "temp4": "13℃~24℃", // 第四日气温
        "temp5": "15℃~31℃", // 第五日气温
        "temp6": "14℃~32℃", // 第六日气温
        "tempF1": "64.4℉~78.8℉", // 今日气温(华氏)
        "tempF2": "62.6℉~84.2℉", // 明日气温(华氏)
        "tempF3": "64.4℉~73.4℉", // 第三日气温(华氏)
        "tempF4": "55.4℉~75.2℉", // 第四日气温(华氏)
        "tempF5": "59℉~87.8℉", // 第五日气温(华氏)
        "tempF6": "57.2℉~89.6℉", // 第六日气温(华氏)
        "weather1": "多云", // 今日天气
        "weather2": "晴转多云", // 明日天气
        "weather3": "雷阵雨转小雨", // 第三日天气
        "weather4": "多云", // 第四日天气
        "weather5": "晴", // 第五日天气
        "weather6": "晴", // 第六日天气
        "img1": "1", // 天气图标编号,此处的编号及其图片获取规则尚不清楚,如有知道详情的恳请评论告知,我将添加说明
        "img2": "99", // 天气图标编号
        "img3": "0", // 天气图标编号
        "img4": "1", // 天气图标编号
        "img5": "4", // 天气图标编号
        "img6": "7", // 天气图标编号
        "img7": "1", // 天气图标编号
        "img8": "99", // 天气图标编号
        "img9": "0", // 天气图标编号
        "img10": "99", // 天气图标编号
        "img11": "0", // 天气图标编号
        "img12": "99", // 天气图标编号
        "img_single": "1", // ? 可能是天气图标编号
        "img_title1": "多云", // ? 可能是天气图标对应的 title
        "img_title2": "多云", // ? 可能是天气图标对应的 title
        "img_title3": "晴", // ? 可能是天气图标对应的 title
        "img_title4": "多云", // ? 可能是天气图标对应的 title
        "img_title5": "雷阵雨", // ? 可能是天气图标对应的 title
        "img_title6": "小雨", // ? 可能是天气图标对应的 title
        "img_title7": "多云", // ? 可能是天气图标对应的 title
        "img_title8": "多云", // ? 可能是天气图标对应的 title
        "img_title9": "晴", // ? 可能是天气图标对应的 title
        "img_title10": "晴", // ? 可能是天气图标对应的 title
        "img_title11": "晴", // ? 可能是天气图标对应的 title
        "img_title12": "晴", // ? 可能是天气图标对应的 title
        "img_title_single": "多云", // ? 可能是天气图标对应的 title
        "wind1": "西南风小于3级转西风3-4级", // 今日风向风力信息
        "wind2": "西风小于3级转西南风3-4级", // 明日风向风力信息
        "wind3": "西南风小于3级转3-4级", // 第三日风向风力信息
        "wind4": "西南风小于3级转3-4级", // 第四日风向风力信息
        "wind5": "西南风小于3级转3-4级", // 第五日风向风力信息
        "wind6": "西南风小于3级转3-4级", // 第六日风向风力信息
        "fx1": "西南风", // ?
        "fx2": "西风", // ?
        "fl1": "小于3级转3-4级", // 今日风力信息
        "fl2": "小于3级转3-4级", // 明日风力信息
        "fl3": "小于3级转3-4级", // 第三日风力信息
        "fl4": "小于3级转3-4级", // 第四日风力信息
        "fl5": "小于3级转3-4级", // 第五日风力信息
        "fl6": "小于3级转3-4级", // 第六日风力信息
        "index": "热",
        "index_d": "天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。",
        "index48": "炎热",
        "index48_d": "天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。",
        "index_uv": "中等", // 紫外线信息
        "index48_uv": "弱", // 48 小时紫外线信息
        "index_xc": "较适宜", // 洗车指数(感谢读者 刘睿 的提醒)
        "index_tr": "适宜", // 旅游指数
        "index_co": "舒适", // 舒适指数
        "st1": "25",
        "st2": "17",
        "st3": "28",
        "st4": "19",
        "st5": "18",
        "st6": "16",
        "index_cl": "较适宜", // 晨练指数
        "index_ls": "适宜", // 晾晒指数
        "index_ag": "极易发" // 感冒指数(感谢读者 刘睿 的提醒)
    }
}
上面这个就是我现在在用的,返回的数据最全面,也是绝大多数博客中都会介绍的。另外还有两个接口比较简洁。
http://www.weather.com.cn/data/sk/101010100.html 这个接口返回的数据是实况数据,像下面这样的。
{
    "weatherinfo": {
        "city": "北京", // 城市中文名
        "cityid": "101010100", // 城市 ID
        "temp": "24", // 温度
        "WD": "西南风", // 风向
        "WS": "1级", // 风力
        "SD": "92%", // 湿度
        "WSE": "1", // ?
        "time": "19:15", // 发布时间
        "isRadar": "1", // 是否有雷达图
        "Radar": "JC_RADAR_AZ9010_JB" // 雷达图编号,雷达图的地址在 http://www.weather.com.cn/html/radar/雷达图编号.shtml
    }
}
还有一个接口http://www.weather.com.cn/data/cityinfo/101010100.html 这个接口返回的数据如下。
{
    "weatherinfo": {
        "city": "北京", // 城市中文名
        "cityid": "101010100", // 城市 ID
        "temp1": "22℃", // ?
        "temp2": "31℃", // ?
        "weather": "阴转晴", // 天气
        "img1": "n2.gif", // ? 天气图标编号
        "img2": "d0.gif", // ? 天气图标编号
        "ptime": "18:00" // 发布时间
    }
}
另外中国天气网还有一个根据 IP 来判断访问者所在地的引擎,地址在http://61.4.185.48:81/ ,直接访问的话会提示“This is the geoip engine created for weather.com.cn. ”,访问http://61.4.185.48:81/g/ 可以返回你的 IP 所在地相应信息,包括 IP 和城市编号,但是没有城市名称。
2013 年 8 月 2 日更新:返回数据最多的那个接口,即本文中最开始介绍的接口,其中的图片获取规则因为博文发布时间久远,我已经遗忘了。如果有哪位读者知道的话,恳请评论告知,我好添加到文章中,方便各位的共享。
另外,天气网本身有另一个用于 Flash 的接口。在天气网上查询任意一个城市的天气,可以看到其页面上有一个 Flash 绘制的“整点天气实况”,就是当天的气温曲线。里面的数据是从 http://flash.weather.com.cn/sk2/101050101.xml 这个接口获得的。返回数据如下。
<?xml version="1.0"?>
<sktq id="101050101" ptime="13-08-02 16:00" city="哈尔滨">
<qw h="16" wd="30" fx="190" fl="2" js="0" sd="64"/>
<qw h="15" wd="30" fx="203" fl="3" js="0" sd="61"/>
<qw h="14" wd="30" fx="174" fl="3" js="0" sd="63"/>
<qw h="13" wd="30" fx="179" fl="3" js="0" sd="62"/>
<qw h="12" wd="29" fx="162" fl="3" js="0" sd="66"/>
<qw h="11" wd="29" fx="214" fl="2" js="0" sd="66"/>
<qw h="10" wd="28" fx="214" fl="2" js="0" sd="70"/>
<qw h="09" wd="28" fx="220" fl="2" js="0" sd="70"/>
<qw h="08" wd="26" fx="178" fl="2" js="0" sd="75"/>
<qw h="07" wd="25" fx="145" fl="1" js="0" sd="76"/>
<qw h="06" wd="24" fx="171" fl="1" js="0" sd="79"/>
<qw h="05" wd="24" fx="131" fl="2" js="0" sd="79"/>
<qw h="04" wd="24" fx="146" fl="2" js="0" sd="77"/>
<qw h="03" wd="24" fx="163" fl="2" js="0" sd="75"/>
<qw h="02" wd="24" fx="126" fl="2" js="0" sd="84"/>
<qw h="01" wd="24" fx="127" fl="1" js="0" sd="81"/>
<qw h="00" wd="25" fx="137" fl="2" js="0" sd="78"/>
<qw h="23" wd="25" fx="99" fl="2" js="0" sd="78"/>
<qw h="22" wd="25" fx="140" fl="2" js="0" sd="76"/>
<qw h="21" wd="26" fx="133" fl="2" js="0" sd="78"/>
<qw h="20" wd="27" fx="149" fl="1" js="0" sd="71"/>
<qw h="19" wd="28" fx="187" fl="2" js="0" sd="67"/>
<qw h="18" wd="29" fx="161" fl="2" js="0" sd="59"/>
<qw h="17" wd="30" fx="138" fl="2" js="0" sd="60"/>
<qw h="16" wd="30" fx="130" fl="3" js="0" sd="57"/>
</sktq>
稍作解析: sktq 是“实况天气”的汉语拼音首字母缩写,这个节点的 id 是城市 ID ,ptime 即是发布时间, city 是城市的名称。根节点内是一系列 qw 节点, qw 即是“气温”的汉语拼音缩写;每个节点中, h 是整点小时数,即此节点数据发布时间的小时位; wd 是温度,以摄氏计; fx 是风向,貌似是个角度,具体的规则我还不太清楚; fl 是风力级数; js 是降水,以毫米计; sd 是相对湿度,以百分数计。这一系列节点是以时间逆序排列的,也就是说,接近当前时间的排在前面。
要使用这个接口的数据,跟其他接口一样,也需要解决读者评论中提到的跨域问题,我个人的建议是用自己的服务器做代理转发,经过代理层之后是要用 JSON 还是 JSONP 或者 Flash 跨域,就随自己喜好和项目需求了吧。
2013 年 8 月 22 日更新:四个图片接口依次如下:
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。其中图片编号 99 代表空图片。
对于想手动获取城市代码的朋友,也有几个接口提供给大家。获取省级代码的接口: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 。需要注意的是这几个接口并不是返回 XML 文档,而是返回纯文本,需要自行分割匹配。
Flash 实况地址在这里: http://flash.weather.com.cn/sk2/shikuang.swf?id=101050101。
本次更新的内容都来自于 http://blog.mynook.info/2012/08/18/weather-com-cn-api.html,在此对接口的挖掘者和分享者表示感谢!也感谢读者朋友的反馈。
中国天气网API的更多相关文章
- [转载]中国天气网API
		最近在做个网站要用到天气网的api,在网上找了些参考资料,这篇文章对天气网api的介绍比较详细,所以转载之,谢谢原作者的辛勤劳动和奉献精神. 原文地址:http://g.kehou.com/t1033 ... 
- 中国天气网API接口
		http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data/cityinfo/101010100.h ... 
- 中国天气网-天气预报接口api
		中国天气网地址:http://www.weather.com.cn 请求服务 : 查询实时天气信息 http://www.weather.com.cn/data/sk/101110101.html 在 ... 
- 天气预报接口api(中国天气网)
		中国天气weather.comhttp://m.weather.com.cn/data/101110101.html(六天预报) http://www.weather.com.cn/data/sk/1 ... 
- 中国天气网 JSON接口的城市编码解析及结果
		最近在弄一个Android应用,其中一个功能是天气情况展示,准备使用google的天气API服务(http://www.google.com/ig/api?hl=zh-cn&weather=, ... 
- 初识python 之 爬虫:爬取中国天气网数据
		用到模块: 获取网页并解析:import requests,html5lib from bs4 import BeautifulSoup 使用pyecharts的Bar可视化工具"绘制图表& ... 
- C#实现中国天气网JSON接口测试
		接上一篇,经过反复的查看,最终从这篇文章中找到了一个可用的JSON接口,于是研究了一下中国天气网JSON接口的测试: 和上一篇XML接口测试的原理是一样的,只是需要安装一下Newtonsoft.Jso ... 
- C#实现中国天气网XML接口测试
		点击链接查看中国天气网接口说明,最近想研究一下接口测试,源于最近一次和某公司的技术总监(交大校友)谈话,发现接口测试的需求是比较大的,于是想要研究一下. 好不容易在网上找到了一个关于中国天气网的接口说 ... 
- Android解析中国天气网的Json数据
		在Android开发中.一般的APP都是通过获取server端的数据来更新UI.从server获取到的数据能够是Json.它的数据量要比XML要小,这里解析中国天气网上获取的数据,尽管已经不再更新了. ... 
随机推荐
- ACM题目:487-3279
			题目是这样子的 Description Businesses like to have memorable telephone numbers. One way to make a telephone ... 
- C++ this 指针
			类的(非静态)成员函数具有一个附加的隐含形参,即指向该类对象的一个指针.这个隐含形参命名为this,与调用成员函数的对象绑定在一起.成员函数不能定义this形参,而是由编译器隐含地定义.成员函数的函数 ... 
- 如何让对象只在堆或者栈中分配空间ANDC++禁止一个类被继承
			在开始之前先来分析一下C++中的new运算符和operator new之间的关联. new:指我们在C++里通常用到的运算符,比如A* a = new A或者调用带参数的构造函数; 对于new来说, ... 
- JavaScript 入門
			<html lang="en"> <head> <meta charset="UTF-8"> <meta na ... 
- [LeetCode]题解(python):137-Single Number II
			题目来源: https://leetcode.com/problems/single-number-ii/ 题意分析: 给定一个数组,数组里面每一个数字都出现了3次除了一个,找出那个数.要求时间复杂度 ... 
- python进阶6 HTTP协议客户端实现
			httplib 1.httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互. httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使 ... 
- js动态创建样式: style 和 link
			js动态创建样式: style 和 link ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 有很多提供动态创建 ... 
- 普通内存、ECC内存和REG ECC内存有什么不同
			都知道,在INTEL平台,北桥负责与CPU的联系,并控制内存.AGP.PCI数据在北桥内部传输.基本上只要主板芯片组确定,那么其支持的内存类型也就确定了. INTEL芯片组划分的很清楚,865PE属于 ... 
- WinAPI: GetVolumeInformation - 读取文件系统信息
			//声明: GetVolumeInformation( lpRootPathName: PChar; {磁盘驱动器代码字符串} lpVolumeNameBuffer: ... 
- Android开发笔记--hello world 和目录结构
			原文:Android开发笔记--hello world 和目录结构 每接触一个新东西 都有一个hello world的例子. 1.新建项目 2.配置AVD AVD 没有要新建个,如果不能创建 运行SD ... 
