最近乙個專案中需要用到過往的天氣資料, 我找到了天氣後報這個** (www.tianqihoubao.com), 並在ss中完成了相關採集, 和大家分享一下.
首先分析這個**提供了兩種資訊:
1. 省市關係
2. 天氣記錄
對應的我們建立資料結構:
[serializable]>> **一共提供34個直轄市/省/特區的天氣資訊,完整的列表在:public
class
province
[serializable]
public
class
city
[serializable]
public
class
weatherdataset
[serializable]
public
class
weatherdata
對應的採集語句是:
var list = default.selectnodes(">> 每個省都有下轄的城市列表,如:#content dt a
");
對應的採集語句是:
var list = default.selectnodes(">> 每個城市都有乙個歷史天氣記錄列表,如:#content dd a
");
對應的採集語句是:
default.selectnodes(">> 進入每條歷史天氣記錄, 就可以得到當月的天氣資料了:對應的採集語句是:#content>div.pcity a
");
var list = default.selectnodes("將這些語句分別包裝為方法, 並將結果繫結到最開始定義的資料結構中:#content>table.b tr:gt(0)");
foreach(var item in
list)
public listgetprovincelist() //>> 完整的指令碼:(複製到ss中即可直接執行)獲取直轄市/省/特區
public listgetcitylist(province province) //
獲取城市列表
public listgetweatherdataset(city city) //
獲取指定城市的天氣歷史記錄集
public listgetweatherdata(weatherdataset ds) //
獲取天氣歷史資料
publicview codevoid
run()
var cl = getcitylist(pl[1
]);
foreach(var c in
cl)
var ds = getweatherdataset(cl[1
]);
foreach(var d in
ds)
var dl = getweatherdata(ds[0
]);
foreach(var d in
dl)
} public listgetprovincelist()
return
result;
}public listgetcitylist(province province)
return
result;
}public listgetweatherdataset(city city)
return
result;
}public listgetweatherdata(weatherdataset ds)
return
result;
}[serializable]
public
class
province
[serializable]
public
class
city
[serializable]
public
class
weatherdataset
[serializable]
public
class
weatherdata
>> 執行效果:
分享乙個ssh打通的指令碼
分享乙個ssh打通的指令碼,經過測試可用。目前只能單向打通,且要求本地使用者名為admin 寫入 可簡單修改 本身只是個人使用,故通用性 異常情況考慮不多,大家可以做個參考。補充一點,important tip authorized keys檔案的許可權很重要,如果設定為777,那麼登入的時候,還是...
乙個shell指令碼顯示當地天氣資訊
bin bash name wallther license gplv3 version 20090511 此指令碼需要安裝 w3m 和 imagemagick 城市 留空可自動檢測 自動檢測不一定精確 城市 可在 上查詢,是個5位的數字 受bones7456和wenbob的天氣指令碼啟發。因為原有...
乙個遠端資料採集系統的實現
乙個遠端資料採集系統的實現,包括 遠端資料採集,gprs資訊傳輸,伺服器資料處理,瀏覽器資料展現和操作。遠端資料採集 採集天然河道水位資料,採用成品壓力式感測器,沒有採集單元 rtu gprs dtu的rs485介面直接接感測器rs485介面。電源 25w太陽能電池板 充放電控制器 25ah免維護鉛...