中国天气网API接口

http://www.weather.com.cn/data/sk/101010100.html

http://www.weather.com.cn/data/cityinfo/101010100.html

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


这三个已经停用,数据不再更新,即使修改Referer,得到的已经不是正确的信息。


官网提供的API

一、调用规范 规范用于指导三方合作伙伴合理调用指数、3天常规预报(24小时)预报服务数据。
请求方式:http get
接口组成:由固定URL加5个不同的参数组成,完整URL需客户端经过固定方式加密后使用。
数据返回:json
完整URL:http://open.weather.com.cn/data/?areaid=""&type=""&date=""&appid=""&key=".urlencode($key);
固定URL:http://open.weather.com.cn/data/

需要申请ID

返回数据:

{
	"c": {
		"c1": "101010100",
		"c2": "beijing",
		"c3": "北京",
		"c4": "beijing",
		"c5": "北京",
		"c6": "beijing",
		"c7": "北京",
		"c8": "china",
		"c9": "中国",
		"c10": "1",
		"c11": "010",
		"c12": "100000",
		"c13": 116.391000,
		"c14": 39.904000,
		"c15": "33",
		"c16": "AZ9010",
		"c17": "+8"
	},
	"f": {
		"f1": [{
			"fa": "",
			"fb": "01",
			"fc": "",
			"fd": "13",
			"fe": "",
			"ff": "0",
			"fg": "",
			"fh": "0",
			"fi": "05:17|19:05"
		},
		{
			"fa": "01",
			"fb": "00",
			"fc": "28",
			"fd": "15",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "05:16|19:06"
		},
		{
			"fa": "00",
			"fb": "01",
			"fc": "31",
			"fd": "15",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "05:15|19:07"
		}],
		"f0": "201604281800"
	}
}

================================================================================

中华万年历API

抓包中华万年历得到的接口(JSON):

http://wthrcdn.etouch.cn/weather_mini?city=北京
通过城市名字获得天气数据,json数据
http://wthrcdn.etouch.cn/weather_mini?citykey=101010100
通过城市id获得天气数据,json数据

数据和中国天气网(www.weather.com.cn)一致

数据:

{
	"desc": "OK",
	"status": 1000,
	"data": {
		"wendu": "22",
		"ganmao": "各项气象条件适宜,无明显降温过程,发生感冒机率较低。",
		"forecast": [{
			"fengxiang": "南风",
			"fengli": "3-4级",
			"high": "高温 26℃",
			"type": "多云",
			"low": "低温 13℃",
			"date": "28日星期四"
		},
		{
			"fengxiang": "无持续风向",
			"fengli": "微风级",
			"high": "高温 28℃",
			"type": "多云",
			"low": "低温 15℃",
			"date": "29日星期五"
		},
		{
			"fengxiang": "无持续风向",
			"fengli": "微风级",
			"high": "高温 31℃",
			"type": "晴",
			"low": "低温 15℃",
			"date": "30日星期六"
		},
		{
			"fengxiang": "无持续风向",
			"fengli": "微风级",
			"high": "高温 29℃",
			"type": "多云",
			"low": "低温 20℃",
			"date": "1日星期天"
		},
		{
			"fengxiang": "北风",
			"fengli": "4-5级",
			"high": "高温 26℃",
			"type": "小到中雨",
			"low": "低温 13℃",
			"date": "2日星期一"
		}],
		"yesterday": {
			"fl": "微风",
			"fx": "无持续风向",
			"high": "高温 19℃",
			"type": "小雨",
			"low": "低温 12℃",
			"date": "27日星期三"
		},
		"aqi": "118",
		"city": "北京"
	}
}

XML

http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100

通过城市id获得天气数据,xml文件数据,
当错误时会有<error>节点
http://wthrcdn.etouch.cn/WeatherApi?city=北京
通过城市名字获得天气数据,xml文件数据


数据:

<resp>
<city>北京</city>
<updatetime>18:45</updatetime>
<wendu>22</wendu>
<fengli>2级</fengli>
<shidu>33%</shidu>
<fengxiang>东南风</fengxiang>
<sunrise_1>05:19</sunrise_1>
<sunset_1>19:06</sunset_1>
<sunrise_2/>
<sunset_2/>
<environment>
<aqi>118</aqi>
<pm25>61</pm25>
<suggest>儿童、老年人及心脏、呼吸系统疾病患者人群应减少长时间或高强度户外锻炼</suggest>
<quality>轻度污染</quality>
<MajorPollutants>臭氧8小时</MajorPollutants>
<o3>185</o3>
<co>1</co>
<pm10>101</pm10>
<so2>4</so2>
<no2>24</no2>
<time>18:00:00</time>
</environment>
<yesterday>
<date_1>27日星期三</date_1>
<high_1>高温 19℃</high_1>
<low_1>低温 12℃</low_1>
<day_1>
<type_1>小雨</type_1>
<fx_1>无持续风向</fx_1>
<fl_1>微风</fl_1>
</day_1>
<night_1>
<type_1>阴</type_1>
<fx_1>无持续风向</fx_1>
<fl_1>微风</fl_1>
</night_1>
</yesterday>
<forecast>
<weather>
<date>28日星期四</date>
<high>高温 26℃</high>
<low>低温 13℃</low>
<day>
<type>多云</type>
<fengxiang>南风</fengxiang>
<fengli>3-4级</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>29日星期五</date>
<high>高温 28℃</high>
<low>低温 15℃</low>
<day>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>晴</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>30日星期六</date>
<high>高温 31℃</high>
<low>低温 15℃</low>
<day>
<type>晴</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>1日星期天</date>
<high>高温 29℃</high>
<low>低温 20℃</low>
<day>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>小雨</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>2日星期一</date>
<high>高温 26℃</high>
<low>低温 13℃</low>
<day>
<type>小到中雨</type>
<fengxiang>北风</fengxiang>
<fengli>4-5级</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>北风</fengxiang>
<fengli>3-4级</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>属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。</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>


一周天气预报接口

http://mobile.weather.com.cn/data/forecast/101010100.html?_=1461845405

1461845405为Unix的时间戳,貌似该参数没有什么用处?

返回数据:

{
	"c": {
		"c1": "101010100",
		"c2": "beijing",
		"c3": "北京",
		"c4": "beijing",
		"c5": "北京",
		"c6": "beijing",
		"c7": "北京",
		"c8": "china",
		"c9": "中国",
		"c10": "1",
		"c11": "010",
		"c12": "100000",
		"c13": "116.391",
		"c14": "39.904",
		"c15": "33",
		"c16": "AZ9010",
		"c17": "+8"
	},
	"f": {
		"f1": [{
			"fa": "01",
			"fb": "03",
			"fc": "10",
			"fd": "5",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:21|17:40"
		},
		{
			"fa": "07",
			"fb": "07",
			"fc": "19",
			"fd": "12",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:22|17:38"
		},
		{
			"fa": "02",
			"fb": "00",
			"fc": "15",
			"fd": "5",
			"fe": "8",
			"ff": "8",
			"fg": "3",
			"fh": "1",
			"fi": "06:23|17:37"
		},
		{
			"fa": "00",
			"fb": "00",
			"fc": "16",
			"fd": "4",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:24|17:35"
		},
		{
			"fa": "00",
			"fb": "00",
			"fc": "18",
			"fd": "7",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:25|17:34"
		},
		{
			"fa": "00",
			"fb": "01",
			"fc": "18",
			"fd": "8",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:26|17:32"
		},
		{
			"fa": "01",
			"fb": "01",
			"fc": "16",
			"fd": "6",
			"fe": "0",
			"ff": "0",
			"fg": "0",
			"fh": "0",
			"fi": "06:27|17:31"
		}],
		"f0": "201310121100"
	}
}

日期始终是201310121100,原因是服务器限制了Referer

气象图标下载

http://openweather.weather.com.cn/Home/Help/icon/iid/10.html

获取全国所有城市代码列表

方法一
XML接口根节点: http://flash.weather.com.cn/wmaps/xml/china.xml
XML接口主要作用是递归获取全国几千个县以上单位的城市代码,如:
http://flash.weather.com.cn/wmaps/xml/liaocheng.xml
方法二
更新:最新发现可以一次性获取全国+国外主要城市,8763个城市列表信息。
URL:http://mobile.weather.com.cn/js/citylist.xml




  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
获取天气数据需要连接到中国天气API 接口。首先需要注册成为开发者,然后获取 API 接口的地址和 API key。然后在 Arduino 中使用 Ethernet 或 Wi-Fi 模块连接到互联,并使用 HTTP GET 请求来获取天气数据。你可以使用 Arduino 的 Ethernet 或 Wi-Fi 库,以及 JSON 解析库来处理响应数据。 以下是一个使用 Arduino 和 Ethernet 模块获取天气数据的简单示例代码: ```cpp #include <SPI.h> #include <Ethernet.h> #include <ArduinoJson.h> byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(192, 168, 1, 177); IPAddress server(218, 75, 157, 99); // 中国天气 API 地址 String apiKey = "your_api_key"; // 替换为你的 API Key EthernetClient client; char buffer[1024]; StaticJsonDocument<1024> jsonDoc; void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); delay(1000); } void loop() { if (client.connect(server, 80)) { client.println("GET /api?city=上海&key=" + apiKey + " HTTP/1.1"); client.println("Host: www.weather.com.cn"); client.println("Connection: close"); client.println(); } while (client.connected() && !client.available()); int length = client.readBytesUntil('\n', buffer, sizeof(buffer)); buffer[length] = '\0'; if (strstr(buffer, "200 OK") != NULL) { while (client.connected() && client.available()) { length = client.readBytesUntil('\n', buffer, sizeof(buffer)); buffer[length] = '\0'; if (strstr(buffer, "Content-Length") != NULL) { int contentLength = atoi(strchr(buffer, ':') + 1); client.readBytes(buffer, contentLength); buffer[contentLength] = '\0'; DeserializationError err = deserializeJson(jsonDoc, buffer); if (err) { Serial.print("JSON deserialization failed: "); Serial.println(err.c_str()); } else { JsonObject weatherInfo = jsonDoc["weatherinfo"]; Serial.print("城市:"); Serial.println(weatherInfo["city"]); Serial.print("温度:"); Serial.println(weatherInfo["temp"]); Serial.print("风向:"); Serial.println(weatherInfo["WD"]); Serial.print("风力:"); Serial.println(weatherInfo["WS"]); Serial.print("湿度:"); Serial.println(weatherInfo["SD"]); Serial.print("发布时间:"); Serial.println(weatherInfo["time"]); } } } } else { Serial.println("HTTP request failed"); } client.stop(); delay(60000); // 每隔一分钟获取一次天气数据 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N3verL4nd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值