1、引言網絡
Heritrix3.X與1.X版本變化比較大,基於此帶來的Extractor定向擴展方法也受到影響,自定義擴展方面由於接口的變化受阻,從而萌生了通用網絡信息採集器設計的想法。一直沒有一個好的網絡信息採集器,必須可以適應下載對象的多樣性和下載內容的複雜性。好比須要同時下載100多家主流媒體的新聞信息,並解析入庫等。本文圍繞通用網絡信息採集器的設計展開。架構
2、需求分析工具
一個好的網絡爬蟲必須知足通用性、多任務、定向性和可擴展性。架構設計
通用性是指能夠知足不一樣格式下載對象的下載,如HTML、JS、PDF等等;多任務是指同時能夠執行多個下載任務,即不一樣的網絡站點;定向性是指能夠根據本身的業務需求定向下載,即只下載本身關注的網頁,其餘無關頁面自動過濾掉。比較好的是開源社區有不少可用的資源,比較很差的是能同時知足以上需求的軟件很是少,好在Heritrix3.X就是可以知足的之一,不過須要本身編寫代碼,擴展Extrator,實現其定向下載。設計
3、架構設計對象
如下部分是期待中網絡信息採集器的邏輯架構。以下圖所示:blog
每個目標任務表明一個下載渠道,好比sina、sohu等,下載規則負責URL過濾,只下載知足規則的內容,好比新聞;解析規則負責已經下載下來的內容的過濾,只選擇我想要的東西,好比新聞標題、內容、評論等;元數據規則定義數據入庫規則,任務與元數據規則關聯實現自動入庫。接口
4、成果展示資源
博客園躺着中槍了,以我我的的技術博客做爲下載目標,如下部分展示的是我經過定向擴展後的下載結果:博客
P文件夾中的內容,表明具體的網頁:
5、遺留問題
1.URL發現是否有必要獨立,單獨作成工具,根據入口網址+過濾規則,輸出待下載對象的URL地址?當前採用的模式是複合式,邏輯上分離,物理上耦合。
2.如何實現增量下載和循環運行,當前任務啓停是經過人工干預。須要改進。