對中國國家氣象局進行api資料分析
中國國家氣象局api資料分析
天氣預報是程式中很常見的功能 然而現在免費好用的天氣api卻很難找 不妨仔細的看一下國家氣象局 本分就此網站來獲取天氣
地址及頁面分析
地址分析
通過嘗試,想要獲取某個城市或者地址的天氣頁面有兩種方式,一種是通過經緯度訪問中國天氣網,另一種是通過城市id訪問中國天氣網 兩個地址都能得到北京市的天氣情況 不過前一種是經緯度,另一種是城市id.
關於城市的id可以檢視中國天氣網可以得到全國2500多個城市縣區及全球其他國家6000多個城市的資料 可以直接通過以上的介面獲得相關城市的天氣資料
頁面分析
id查詢
我們先訪問以下中國天氣網頁面 看看整個頁面都請求了什麼

中國天氣網 這個頁面並沒有返回對應的資料 也是 現在誰家的網頁還能都是靜態的
然後是這個位置的素質五連

後面是一個時間戳 模仿了對應的請求格式 但是每次訪問的時候都被拒絕應該是頁面js程式碼中有控制 看來直接通過城市id獲取不行了
經緯度查詢
如果直接通過經緯度地址進行訪問中國天氣網通過分析可以在直接訪問的地址中找到返回這個部分資料

資料分析
([{"TEMMIN":19,"reftime":"201709022000","WIND1":"04","WINS1":"01","WIND2":"01","WINS2":"00","WEATHER1":"02","WEATHER2":"02","TEMMAX":29},{"TEMMIN":19,"reftime":"201709032000","WIND1":"01","WINS1":"00","WIND2":"08","WINS2":"00","WEATHER1":"02","WEATHER2":"02","TEMMAX":27},{"TEMMIN":18,"reftime":"201709042000","WIND1":"01","WINS1":"00","WIND2":"01","WINS2":"00","WEATHER1":"01","WEATHER2":"02","TEMMAX":27},{"TEMMIN":19,"reftime":"201709052000","WIND1":"01","WINS1":"00","WIND2":"08","WINS2":"00","WEATHER1":"07","WEATHER2":"02","TEMMAX":29},{"TEMMIN":18,"reftime":"201709062000","WIND1":"01","WINS1":"00","WIND2":"02","WINS2":"00","WEATHER1":"00","WEATHER2":"00","TEMMAX":30}],[{"WIND":"05","WEA08":"02","reftime":"201709010800","PRE08":"0.0","TMAX":28,"TMIN":21,"WEA20":"02","PRE20":"0.0","WINS":"01"}])
這部分的資料可以看出來是個json格式資料 取其中一部分來分析
{"TEMMIN":19,"reftime":"201709022000","WIND1":"04","WINS1":"01","WIND2":"01","WINS2":"00","WEATHER1":"02","WEATHER2":"02","TEMMAX":29}
經過整理後發現對應資料如下
TEMMIN : 最低溫度
TEMMAX : 最高溫度
reftime : 時間
WEATHER1 : 天氣1 (晴轉多雲 的晴)
WEATHER2 : 天氣2 (晴轉多雲 的多雲)
weather的對應如下
{"00":"晴","01":"多雲","02":"陰","03":"陣雨","04":"雷陣雨","05":"雷陣雨伴有冰雹","06":"雨夾雪","07":"小雨","08":"中雨","09":"大雨","10":"暴雨","11":"大暴雨","12":"特大暴雨","13":"陣雪","14":"小雪","15":"中雪","16":"大雪","17":"暴雪","18":"霧","19":"凍雨","20":"沙塵暴","21":"小到中雨","22":"中到大雨","23":"大到暴雨","24":"暴雨到大暴雨","25":"大暴雨到特大暴雨","26":"小到中雪","27":"中到大雪","28":"大到暴雪","29":"浮塵","30":"揚沙","31":"強沙塵暴","53":"霾","99":""}
WIND1 : 風向1
WINS1 : 風向1等級
WIND2 : 風向2
WINS2 : 風向2等級
WIND對應如下
{"0":"無持續風向","1":"東北風","2":"東風","3":"東南風","4":"南風","5":"西南風","6":"西風","7":"西北風","8":"北風","9":"旋轉風"}
WINS對應如下:
{"0":"微風","1":"3-4級","2":"4-5級","3":"5-6級","4":"6-7級","5":"7-8級","6":"8-9級","7":"9-10級","8":"10-11級","9":"11-12級"};
獲取流程
通過經緯度可以直接獲取天氣資訊 而且精度較高可以定位當前位置後再獲取天氣資訊 但是隻適用國內的天氣資訊 可以本地快取全國所有地區的經緯度或者通過城市id訪問天氣資訊的頁面中獲取經緯度 看實際使用情況斟酌
而通過城市id的方法可以獲得全球的天氣資訊
最後
頁面還有很多資料可以發現
【附錄】

資料圖
需要資料的朋友可以加入Android架構交流QQ群聊:513088520
點選連結加入群聊【Android移動架構總群】: 加入群聊
獲取免費學習視訊,學習大綱另外還有像高階UI、效能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)等Android高階開發資料免費分享。