天天看點

通用網絡資訊采集器(爬蟲)設計方案

一、引言

  heritrix3.x與1.x版本變化比較大,基于此帶來的extractor定向擴充方法也受到影響,自定義擴充方面因為接口的變化受阻,進而萌生了通用網絡資訊采集器設計的想法。一直沒有一個好的網絡資訊采集器,必須能夠适應下載下傳對象的多樣性和下載下傳内容的複雜性。比如需要同時下載下傳100多家主流媒體的新聞資訊,并解析入庫等。本文圍繞通用網絡資訊采集器的設計展開。

二、需求分析

  一個好的網絡爬蟲必須滿足通用性、多任務、定向性和可擴充性。

通用網絡資訊采集器(爬蟲)設計方案

通用性是指可以滿足不同格式下載下傳對象的下載下傳,如html、js、pdf等等;多任務是指同時可以執行多個下載下傳任務,即不同的網絡站點;定向性是指可以根據自己的業務需求定向下載下傳,即隻下載下傳自己關注的網頁,其他無關頁面自動過濾掉。比較好的是開源社群有很多可用的資源,比較不好的是能同時滿足以上需求的軟體非常少,好在heritrix3.x就是能夠滿足的之一,不過需要自己編寫代碼,擴充extrator,實作其定向下載下傳。

三、架構設計

  以下部分是期待中網絡資訊采集器的邏輯架構。如下圖所示:

通用網絡資訊采集器(爬蟲)設計方案

 每一個目标任務代表一個下載下傳管道,比如sina、sohu等,下載下傳規則負責url過濾,隻下載下傳滿足規則的内容,比如新聞;解析規則負責已經下載下傳下來的内容的過濾,隻選擇我想要的東西,比如新聞标題、内容、評論等;中繼資料規則定義資料入庫規則,任務與中繼資料規則關聯實作自動入庫。

四、成果展現

  部落格園躺着中槍了,以我個人的技術部落格作為下載下傳目标,以下部分展現的是我通過定向擴充後的下載下傳結果:

通用網絡資訊采集器(爬蟲)設計方案

p檔案夾中的内容,代表具體的網頁:

通用網絡資訊采集器(爬蟲)設計方案

五、遺留問題

  1.url發現是否有必要獨立,單獨做成工具,根據入口網址+過濾規則,輸出待下載下傳對象的url位址?目前采用的模式是複合式,邏輯上分離,實體上耦合。

  2.如何實作增量下載下傳和循環運作,目前任務啟停是通過人工幹預。需要改進。

繼續閱讀