文章轉自:http://www.nohacks.cn/post-35.htmlphp
自序:html
由nohacks.cn 收集整理,來源於網絡,版權歸原做者全部,基本收集了網絡上能使用的大部分天氣API接口,做者水平精力有限,不免有遺漏或錯誤的地方,歡迎反饋,做者網站:http://nohacks.cngit
更新記錄:json
2015.3.2 更新雲聚,增長天氣網接口。api
2015.2.28 增長百度天氣圖片,感謝網友彬子的反饋。網絡
2015. 2.19 增長百度天氣接口,更新中國天氣網API。app
目錄:post
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. 微雲
7. 百度 API
7.1 獲取天氣
7.2 獲取城市列表
8. 天氣網 (網頁插件型)
8.1 簡介
8.2 智能將來五每天氣
前言:
1. 城市代碼
如今網絡上流傳的天氣API實際上大多最終調用的是中國天氣網的數據,而中國天氣網是把每一個地方分配了一個代碼,這個代碼就是城市代碼,要獲取天氣,咱們須要知道城市代碼,有2種方法:
1.1 手動查詢
在搜索框上輸入你要須要得到天氣的城市,點擊查詢,便可在地址欄得到相應城市編號,示範:北京的地方代碼:101010100
1.2 自動查詢
1.2.1 經過百度API
http://apistore.baidu.com/microservice/cityinfo?cityname=%e5%8c%97%e4%ba%ac
注意: "%e5%8c%97%e4%ba%ac"是"北京"的URL編碼(UniCode)
返回格式(UniCode):
{
"errNum": 0,
"retMsg": "success",
"retData": {
"cityName": "北京",
"provinceName": "北京",
"cityCode": "101010100",
"zipCode": "100000",
"telAreaCode": "010"
}
}
很明顯,cityCode的值 "101010100"就是城市代碼。
2. 天氣標誌圖片
網絡上流傳的一些很好用的免費API卻沒有提供天氣標誌圖片,對有此需求的人裏說,不得不說是個遺憾,爲了彌補這個遺憾,不得不借助第三方平臺配合使用,目前做者使用的是新浪天氣平臺的數據:
把天氣API獲取到的天氣標誌轉換爲拼音,好比「多雲」,轉換爲拼音「duoyun「,而後根據下面的規則轉換爲圖片地址:
2.1 新浪圖片
小圖(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 正文:
2.2 百度天氣圖片
目前知道的小圖,感謝網友彬子的反饋
多雲(白天) 多雲(夜間)
白天: http://api.map.baidu.com/images/weather/day/duoyun.png
夜間: http://api.map.baidu.com/images/weather/night/duoyun.png
第一節: 中國天氣網
1.1 簡介
中國最權威的天氣預報網絡平臺,不少平臺實際上也是用的他們的數據。
官方網站:http://www.weather.com.cn
1.2 地方代碼獲取方法
前文已經提過
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是天氣標誌圖片,接口格式以下:
1.5 生活指數:
http://www.weather.com.cn/data/zs/101010100.html 失效
返回格式: 文字較多,這裏省略,請點擊訪問。
1.6 獲取將來幾每天氣(有效,不保證穩定)
http://m.weather.com.cn/atad/101010100.html
圖片路徑:
http://i.tq121.com.cn/i/mobile/images/d00.png
替換方法同上
返回示例:
{"weatherinfo":{"city":"北京","city_en":"beijing","date_y":"2015年2月19日","date":"","week":"星期四","fchh":"18","cityid":"101010100","temp1":"-2℃~4℃","temp2":"-1℃~8℃","temp3":"-3℃~5℃","temp4":"-4℃~6℃","temp5":"-3℃~7℃","temp6":"-1℃~6℃","tempF1":"28.4℉~39.2℉","tempF2":"30.2℉~46.4℉","tempF3":"26.6℉~41℉","tempF4":"24.8℉~42.8℉","tempF5":"26.6℉~44.6℉","tempF6":"30.2℉~42.8℉","weather1":"小雪轉雨夾雪","weather2":"小雪轉陰","weather3":"晴","weather4":"晴","weather5":"晴","weather6":"陰","img1":"14","img2":"6","img3":"14","img4":"2","img5":"0","img6":"99","img7":"0","img8":"99","img9":"0","img10":"99","img11":"2","img12":"99","img_single":"6","img_title1":"小雪","img_title2":"雨夾雪","img_title3":"小雪","img_title4":"陰","img_title5":"晴","img_title6":"晴","img_title7":"晴","img_title8":"晴","img_title9":"晴","img_title10":"晴","img_title11":"陰","img_title12":"陰","img_title_single":"雨夾雪","wind1":"微風","wind2":"微風轉北風4-5級","wind3":"北風4-5級轉3-4級","wind4":"北風3-4級轉微風","wind5":"微風","wind6":"微風轉北風3-4級","fx1":"微風","fx2":"微風","fl1":"小於3級","fl2":"小於3級轉4-5級","fl3":"4-5級轉3-4級","fl4":"3-4級轉小於3級","fl5":"小於3級","fl6":"小於3級轉3-4級","index":"冷","index_d":"天氣冷,建議着棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜着厚棉衣、冬大衣或厚羽絨服。","index48":"","index48_d":"","index_uv":"最弱","index48_uv":"","index_xc":"不宜","index_tr":"適宜","index_co":"較不溫馨","st1":"4","st2":"-4","st3":"8","st4":"-2","st5":"5","st6":"-3","index_cl":"較不宜","index_ls":"不宜","index_ag":"極不易發"}}
2. 開放數據 - k780數據
2.1 簡介
官方網站:http://www.k780.com
說明: 數據來自國家氣象局天氣網,每小時更新一次
免費版有每小時點擊次數的限制(免費版最多每小時720次查詢)
2.2 獲取今日天氣
詳細說明: http://www.k780.com/api/weather.today
返回實例:
<?xml version="1.0" encoding="utf-8" ?>
參數說明:其中 ,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 version="1.0" encoding="utf-8" ?>
轉換方法與前面相似,這裏就不須要重複了。
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 簡介
APP "中華萬年曆"使用的API接口,查詢速度很快,惟一的缺點是沒有天氣標誌圖片,提供2個接口,一個簡化版,一個詳細版,詳細說明以下:
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":"北京"}}
4.3. 詳細版接口
接口示例: http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100
返回示例:
5. 新浪天氣接口
接口示例:
http://php.weather.sina.com.cn/xml.php?city=深圳&password=DJOYnieT8234jlsK&day=0
其中,city後是城市名稱,Password固定,Day爲0表示當每天氣,1表示次日的天氣,2表示第三天的天氣,以此類推,最大爲4
返回示例:
圖片格式:
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
6.雲聚 (功能不少,需收費)
官方文檔: http://www.36wu.com/Service/Details/1
6.1 實時氣象
參數名 | 數據類型 | 是否必須 | 默認值 | 描述 | 備註 |
district | string | 是 | 無 | 城市名稱(必須編碼)或城市ID | 中文字符需編碼 |
output | string | 否 | json | 輸出格式,json或xml,默認json | |
authkey | string | 否 | 無 | 商用或試用的authkey,無authkey參數狀況下每小時訪問僅限20次,點擊申請authkey |
6.2 IP智能地區實時氣象
示 例:http://api.36wu.com/Weather/GetWeatherByIp?output=xml
參數名 | 數據類型 | 是否必須 | 默認值 | 描述 | 備註 |
iP | string | 否 | 客戶端IP | 根據ip返回相應地區氣象,若是被省略,表示使用客戶端IP | |
output | string | 否 | json | 輸出格式,json或xml,默認json | |
authkey | string | 否 | 無 | 商用或試用的authkey,無authkey參數狀況下每小時訪問僅限20次,點擊申請authkey |
6.3 將來一週氣象
示 例: http://api.36wu.com/Weather/GetMoreWeather?district=%E5%8C%97%E4%BA%AC&output=xml
6.4 IP智能地區將來一週氣象
示 例:http://api.36wu.com/Weather/GetMoreWeatherByIp?output=xml
6.5 生活氣象指數
示 例:http://api.36wu.com/Weather/GetWeatherIndex?district=%E5%8C%97%E4%BA%AC&output=xml
6.6 城市列表查詢
示 例:http://api.36wu.com/Weather/GetAreaList?&output=xml
7. 百度API Store (當每天氣)
官方文檔: http://apistore.baidu.com/astore/serviceinfo/1798.html
7.1 天氣查詢
接口地址:http://apistore.baidu.com/microservice/weather
請求方法:GET
參數名 | 描述 | 請求示例 | 備註 |
cityid | 城市代碼 | http://apistore.baidu.com/microservice/weather?cityid=101010100 | |
cityname | 城市名稱 | http://apistore.baidu.com/microservice/weather?cityname=北京 | 中文字符需編碼 |
citypinyin | 城市拼音 | http://apistore.baidu.com/microservice/weather?citypinyin=beijing |
JSON返回示例:
{ errNum: 0, errMsg: "success", retData: { city: "北京", //城市 pinyin: "beijing", //城市拼音 citycode: "101010100", //城市編碼 date: "15-02-11", //日期 time: "11:00", //發佈時間 postCode: "100000", //郵編 longitude: 116.391, //經度 latitude: 39.904, //維度 altitude: "33", //海拔 weather: "晴", //天氣狀況 temp: "10", //氣溫 l_tmp: "-4", //最低氣溫 h_tmp: "10", //最高氣溫 WD: "無持續風向", //風向 WS: "微風(<10m/h)", //風力 sunrise: "07:12", //日出時間 sunset: "17:44" //日落時間 } }
7.2 城市信息列表
接口地址:http://apistore.baidu.com/microservice/cityinfo
請求方法:GET
參數名 | 描述 | 請求示例 | 備註 |
cityname | 城市名稱 | http://apistore.baidu.com/microservice/cityinfo?cityname=北京 | 能夠用來經過名稱獲取代碼,需編碼 |
JSON返回示例:
{ errNum: 0, retMsg: "success", retData: { cityName: "北京", provinceName: "北京", cityCode: "101010100", //天氣預報城市代碼 zipCode: "100000", //郵編 telAreaCode: "010" //電話區號 } }
注意: 提交含有中文字符的URL時須要進行URL編碼否則沒法正常獲取數據,而且返回數據是UniCode編碼的,注意轉換。百度雖然穩定,遺憾的是沒有天氣符號,不過咱們能夠經過上面提到過新浪的接口獲取。
8. 中國天氣網 (網頁插件型)
8.1 簡介
官方文檔: http://www.tianqi.com/plugin/
示例: http://i.tianqi.com/index.php?c=code&id=12&icon=1&py=guangzhou&num=5
天氣網(www.tianqi.com )天氣插件接口 服務地址:http://i.tianqi.com/index.php | |||||
參數名 | 類型 | 是否必須 | 默認值 | 描述 | 備註 |
c | string | 是 | 無 | 獲取方式,設置爲"code",表示獲取代碼。 | |
id | dword | 是 | 無 | 模板樣式,建議設置爲19 | |
icon | dword | 否 | 1 | 圖標樣式,範圍1-5 | |
py | string | 否 | 客戶 | 地方名全拼,默認爲客戶地方。 | |
num | dword | 否 | 5 | 預報天數 |
8.2 智能將來五每天氣預報:http://i.tianqi.com/index.php?c=code&id=19
返回數據:
不定時更新中。。。。
@2014-2015 nohacks.cn 版權全部,轉載請註明出處