前期焦點

小而強悍的Java爬蟲程式【Crawler4j】
2016-5-25

何謂爬蟲(Crawler)?

爬蟲是一種透過瀏覽特定網站內容,來蒐集該網站當中的頁面連結與資訊,持續深度瀏覽與走訪,直到該網站所有網頁皆蒐集完成的過程。常見於建立搜尋引擎,以提供使用者檢索資料;或是將擷取的資料加以整理與分析,為將來可能、不確定性高的問題,提供決策參考。

了解 Crawler4j

Crawler4j 是一款以Java撰寫的Open Source爬蟲程式,為網路爬蟲機制提供一個簡單的介面。使用它,我們能夠在短時間內,建置一個多執行緒(multi-threaded)的網路爬蟲。

運作方式

我們需要建立一個繼承(extends)WebCrawler類別的自訂類別,這個類別將會決定哪一個URLs應該被走訪,以及處理走訪時下載的網頁內容與檔案內容。下面的圖片,提供了一個簡單的實作範例:

範例圖1

圖片當中,我們可以看到兩個覆寫(Override)父類別的方法。shouldVisit決定所設定的URL能否被走訪,透過正規表達式(Regular Expression)的設定(Pattern),我們可以過濾掉一些不必要的副檔名(例如css、js…等等);visit在URL內容成功地下載結束後被呼叫,在範例中,我們可以簡單地取得url、text、links、html,以及所下載的頁面唯一id。

下面的圖片中,表示我們應該也實作一個控制用的類別,來定義我們要走訪的URLs、被爬蟲走訪下載後的儲存資料夾,以及並行的多執行緒數量:

範例圖2

結論

Crawler4j是一套開放原始碼、小而美、強而有力的爬蟲程式,短時間即可建置起來,且作者在GitHub上,提供了簡明的實作方式,網路上也有許許多多的參考資料,有分析網頁資訊需求的人,不妨下載來試試。

參考連結
[1] crawler4j GitHub: https://github.com/yasserg/crawler4j
[2] crawler4j project home: https://code.google.com/p/crawler4j/