一、引言
heritrix3.x與1.x版本變化比較大,基于此帶來的extractor定向擴充方法也受到影響,自定義擴充方面因為接口的變化受阻,進而萌生了通用網絡資訊采集器設計的想法。一直沒有一個好的網絡資訊采集器,必須能夠适應下載下傳對象的多樣性和下載下傳内容的複雜性。比如需要同時下載下傳100多家主流媒體的新聞資訊,并解析入庫等。本文圍繞通用網絡資訊采集器的設計展開。
二、需求分析
一個好的網絡爬蟲必須滿足通用性、多任務、定向性和可擴充性。
通用性是指可以滿足不同格式下載下傳對象的下載下傳,如html、js、pdf等等;多任務是指同時可以執行多個下載下傳任務,即不同的網絡站點;定向性是指可以根據自己的業務需求定向下載下傳,即隻下載下傳自己關注的網頁,其他無關頁面自動過濾掉。比較好的是開源社群有很多可用的資源,比較不好的是能同時滿足以上需求的軟體非常少,好在heritrix3.x就是能夠滿足的之一,不過需要自己編寫代碼,擴充extrator,實作其定向下載下傳。
三、架構設計
以下部分是期待中網絡資訊采集器的邏輯架構。如下圖所示:
每一個目标任務代表一個下載下傳管道,比如sina、sohu等,下載下傳規則負責url過濾,隻下載下傳滿足規則的内容,比如新聞;解析規則負責已經下載下傳下來的内容的過濾,隻選擇我想要的東西,比如新聞标題、内容、評論等;中繼資料規則定義資料入庫規則,任務與中繼資料規則關聯實作自動入庫。
四、成果展現
部落格園躺着中槍了,以我個人的技術部落格作為下載下傳目标,以下部分展現的是我通過定向擴充後的下載下傳結果:
p檔案夾中的内容,代表具體的網頁:
五、遺留問題
1.url發現是否有必要獨立,單獨做成工具,根據入口網址+過濾規則,輸出待下載下傳對象的url位址?目前采用的模式是複合式,邏輯上分離,實體上耦合。
2.如何實作增量下載下傳和循環運作,目前任務啟停是通過人工幹預。需要改進。