nutch工作流程簡介

2021-07-15 06:05:57 字數 2893 閱讀 9713

先用一幅圖來形容nutch的工作流程:

一、抓取部分(網路爬蟲)

1.建立初始url集

2.將url集注入crawldb資料庫(inject包)

3. 根據crawldb資料庫建立抓取列表---generate

4.執行抓取,獲取網頁資訊---fetch

5.更新資料庫,把獲取到的頁面資訊存入資料庫中---updatedb

6.重複進行3~5的步驟,直到預先設定的抓取深度。---這個迴圈過程被稱為「產生/抓取/更新」迴圈

7.根據segments的內容更新linkdb資料庫---invertlinks

(注:a.這裡linkdb是用來存放所有超連結及每個鏈結的連入位址和錨文字的,如下圖所示:

crawldb和linkdb 是web link目錄,存放url 及url的互聯關係,作為爬行與重新爬行的依據,頁面預設30天過期。

c.segments是用來存放抓取的頁面,它與連入深度有關(depth),在這個資料夾下面包含留個子目錄,分別是:

content

:抓取下來的網頁內容,在網頁抓取時生成

crawl_fetch

crawl_generate

:最初生成(初始url集,即我們常說的種子站點)

crawl_parse

:用來更新crawldb的外鏈

parse_data

parse_text:解析抓取的資料檔案時生成,網頁的文字資訊

其中 crawl_generate、

crawl_fetch和

crawl_parse是

crawldb的部分

url資料,它們格式一樣,不同的是抓取時間、狀態、簽名等有所變化 。)   

8.建立索引---index

二、搜尋程式工作流程

1.使用者通過使用者介面進行查詢操作

2.將使用者查詢轉化為lucene查詢

3.從索引庫中提取滿足使用者檢索需求的結果集

4.返回結果

詳細介紹:

第一部分流程綜述:

1.)建立初始url集

建立url集的方式主要通過兩種:一是通過各個url間的web鏈結關係即超連結,二是通過人為的加入即站長提交,因為按照超連結的方式爬蟲不可能爬取網路中所有的站點,所以站長可以向搜尋引擎提出收錄某個站點,搜尋引擎經過核查後加入,

2.)inject操作分析

inject操作呼叫的是nutch的核心包之一crawl包中的類org.apache.nutch.crawl.injector。它執行的結果是:crawldb資料庫內容得到更新,包括url及其狀態。

注入抓取url。因為nutch的抓取程式要抓取網頁,而定位到某個(或者某些)網頁需要指定乙個url,在此基礎上,nutch按照廣度遍歷策略進行抓取,會根據一開始指定的url(可以是乙個url集合:urls),以此為基礎進行抓取工作。它主要實現以下幾個功能:

a.將url集合進行格式化和過濾,消除其中的非法url,並設定url狀態(unfetched),按照一定方法進行初始化分值;

b.將url進行合併,消除重複的url入口

c.將url及其狀態、分值存入crawldb資料庫,與原資料庫中重複的則刪除舊的,更換新的

3.)generate 操作分析

generate操作呼叫的是crawl包中的類org.apache.nutch.crawl.generator。它執行的結果是:建立了抓取 列表,存放於segments目錄下,以時間為資料夾名稱。迴圈抓取多少次,segments資料夾下就會有多少個以時間為名稱的資料夾。它主要實現以下幾個功能:

a. 從crawldb資料庫中將url取出並進行過濾;

b.對url進行排序,通過網域名稱、鏈結數和一種hash演算法綜合進行降序排列;

c.將排列列表寫入segments目錄中。

4.)fetch操作分析

fetch操作呼叫的是fetcher包中的類org.apache.nutch.fetcher.fetcher。它執行的結果是:將頁面內容抓取下來,存於segment目錄下。它的主要功能如下:

a.執行抓取,按照segments目錄下的抓取列表進行;

b.抓取過程中,頁面的url位址可能因為鏈結發生改變,從而需要更新url位址;

c.抓取採用多執行緒方式進行,以提高抓取速度;

d.fetch操作過程中呼叫了parse操作。

5.)parse 解析操作

parse操作呼叫的是parse包中的類org.apache.nutch.parse.parsesegment。它執行的結果是:將fetch得到的頁面解析為parse.text和parse.data,存於segments目錄下。

通過content parser解析器,最終獲取到的就是文字內容和其它一些可能需要用到的資料。有了這些可以識別的文字內容和資料,就可以基於此來建立索引庫,而且需要將本次抓取任務的詳細資訊登入到crawldb,為下次抓取任務提供有用的資訊(比如:避免重複抓取相同的url指定的頁面)。

因此接下來分為兩個方向:乙個是索引,乙個是更新crawldb並繼續執行抓取任務:

indexing

這是乙個索引的過程,對分析處理完成並提交的文字及其資料建立索引,通過索引檔案就可以實現資訊的檢索功能了。建立索引過程中,由於是基於lucene的,所以用到了analyzer分析器,對預處理的檔案進行分析、過濾、分詞等等,最後將寫入到索引庫,供搜尋程式工作使用。

update crawldb with new extracted urls

根據網頁分析處理獲取到的資訊,更新crawldb(爬行資料庫),並根據提取到的抓取任務已經注入的urls迴圈執行抓取任務。

第二部分流程綜述:

這部分比較簡單了,就是啟動web伺服器,為使用者提供檢索服務。

這裡,使用者可以直接通過輸入檢索關鍵字,使用lucene對使用者檢索關鍵字進行處理呼叫nutch的搜尋程式,基於索引庫中儲存的資訊,來提取滿足使用者檢索需求的資訊。

Nutch工作流程

nutch工作流程 建立初始url集合分析 超連結是指機械人程式根據網頁鏈到其他網頁中的超連結,就像日常生活中所說的 一傳十,十傳百 一樣,從少數幾個網頁開始,連到資料庫上所有到其他網頁的鏈結。理論上,若網頁上有適當的超連結,機械人便可以遍歷絕大部分網頁。站長提交是指在實際執行中,爬蟲不可能抓取到所...

SpringMVC工作流程簡介

前端控制器 接受請求 分發請求 響應結果 對映器 根據請求url查詢處理器 介面卡 適配 執行處理器 處理器 處理業務請求,有多種實現方式,如 實現controller介面 使用註解 視 析器 根據檢視名稱進行查詢,生成檢視物件。1.客戶端通過url傳送請求到前端控制器 3.將url對應的處理器返回...

suricata工作流程簡介

1.suricata 是乙個高效能的ids 入侵檢測系統 ips,網路安全監控引擎。該專案是乙個不受益的開源專案。2.suricata 執行模式 從上圖我們可以看出suricata核心有3個模組 1.解碼執行緒 解碼執行緒包括。資料報的分片重組。udp tcp 等等頭部解析 2.detect執行緒 ...