VitaBox AD

2018年1月24日 星期三

[R]如何使程式每間隔一段時間即執行一次?


針對網頁資料的蒐集需求,以R語言製作網頁爬蟲(Web Crawler)是不錯的工具之一,藉由安裝網頁擷取相關套件(Package)和搭配幾個簡易語法,即可達成需求。然而,若網頁數據隨時間不斷更新,同時亦無提供隨時間變化的完整數據下載服務,例如氣象觀測資料和即時匯率變動資料等等。新增每間隔一段時間即執行一次的程式碼並將蒐集數據彙整成圖表,以進一步分析後續趨勢,是解決方案之一。(OS:另一個想到的解決方式是新增判斷網頁少量數據是否已更新,再擷取和比對全部數據,該方式考量網路資源的不必要消耗並兼具網頁造訪的禮貌性。)

善用while結構判斷語法,可依照需求自行設定間隔時間,如圖一範例程式碼所示。說明如下:
1. df為間隔時間設定,該範例以mins為單位,換句話說,間隔0.1分鐘(~6秒鐘)即執行一次程式碼。
2. t0為起始時間,也是整個程式碼的時間參考點。
3. 利用while監控時間變化與間隔時間的關係是否滿足,若滿足,即顯示當次擷取資料的時間t,如圖二的紅色框所示。如此一來,可達到每間隔一段時間即執行一次程式的目的,以封面圖為例,即是每間隔一段時間進行一次網頁爬蟲數據工作,並將擷取數據簡易繪製而成。

圖一 範例程式碼
圖二 輸出結果
最後,若無法確切得知網頁數據的更新頻率,為了避免數據時而重覆或時而遺漏,建議可縮短取樣間隔時間,並加入重複數據的判斷程式碼,以確保數據的完整性。

沒有留言:

張貼留言