一、引言
Heritrix3.X與1.X版本變化比較大,基於此帶來的Extractor定向擴展方法也受到影響,自定義擴展方面因為接口的變化受阻,從而萌生了通用網絡信息采集器設計的想法。一直沒有一個好的網絡信息采集器,必須能夠適應下載對象的多樣性和下載內容的復雜性。比如需要同時下載100多家主流媒體的新聞信息,並解析入庫等。本文圍繞通用網絡信息采集器的設計展開。
二、需求分析
一個好的網絡爬蟲必須滿足通用性、多任務、定向性和可擴展性。

通用性是指可以滿足不同格式下載對象的下載,如HTML、JS、PDF等等;多任務是指同時可以執行多個下載任務,即不同的網絡站點;定向性是指可以根據自己的業務需求定向下載,即只下載自己關注的網頁,其他無關頁面自動過濾掉。比較好的是開源社區有很多可用的資源,比較不好的是能同時滿足以上需求的軟件非常少,好在Heritrix3.X就是能夠滿足的之一,不過需要自己編寫代碼,擴展Extrator,實現其定向下載。
三、架構設計
以下部分是期待中網絡信息采集器的邏輯架構。如下圖所示:

每一個目標任務代表一個下載渠道,比如sina、sohu等,下載規則負責URL過濾,只下載滿足規則的內容,比如新聞;解析規則負責已經下載下來的內容的過濾,只選擇我想要的東西,比如新聞標題、內容、評論等;元數據規則定義數據入庫規則,任務與元數據規則關聯實現自動入庫。
四、成果展現
博客園躺着中槍了,以我個人的技術博客作為下載目標,以下部分展現的是我通過定向擴展后的下載結果:

P文件夾中的內容,代表具體的網頁:

五、遺留問題
1.URL發現是否有必要獨立,單獨做成工具,根據入口網址+過濾規則,輸出待下載對象的URL地址?當前采用的模式是復合式,邏輯上分離,物理上耦合。
2.如何實現增量下載和循環運行,當前任務啟停是通過人工干預。需要改進。
