中国天气网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,在此對接口的挖掘者和分享者表示感謝!也感謝讀者朋友的反饋。
轉載于:https://www.cnblogs.com/waddell/p/3391137.html
總結