Nutch工作流程

2021-05-27 09:57:27 字數 3150 閱讀 1863

nutch工作流程:建立初始url集合分析

超連結是指機械人程式根據網頁鏈到其他網頁中的超連結,就像日常生活中所說的「一傳十,十傳百……」一樣,從少數幾個網頁開始,連到資料庫上所有到其他網頁的鏈結。理論上,若網頁上有適當的超連結,機械人便可以遍歷絕大部分網頁。

站長提交是指在實際執行中,爬蟲不可能抓取到所有站點,為此,**站長可以向搜尋引擎進行提交,要求收錄,搜尋引擎經過核查之後,便將該**加入到url集合中,進行抓取。

nutch工作流程:inject操作分析

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

inject操作主要作用可以從下面3方面來說明:

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

(2) 將url進行合併,消除重複的url入口;

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

nutch工作流程:generate操作分析

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

generate操作主要作用可以從下面3方面來說明:

(1) 從crawldb資料庫中將url取出並進行過濾;

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

(3) 將排列列表寫入segments目錄中。

nutch工作流程:fetch操作分析

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

fetch操作主要作用可以從下面4方面來說明:

(1) 執行抓取,按照segments目錄下的抓取列表進行;

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

(3) 抓取採用多執行緒方式進行,以提高抓取速度;

(4) fetch操作過程中呼叫了parse操作。

nutch工作流程:parse操作分析

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

parse操作主要作用可以從下面3方面來說明:

(1) 解析segment中由fetch得到的頁面,並進行整理,將頁面分成為parse-date和parse-text;

(2) parse-date中儲存的是頁面的題名、作者、日期、鏈結等內容;

(3) parse-text中儲存的是頁面的文字內容。

nutch工作流程:updatedb操作分析

updatedb操作呼叫的是crawl包中的類org.apache.nutch.crawl.crawldb。它執行的結果是:更新了crawldb資料庫,為下一輪抓取做準備。

updatedb操作主要作用如下:

根據segments目錄下fetch目錄和parse目錄中的內容,對crawldb進行更新,增加新的url,更換舊的url。

nutch工作流程:index過程分析

index過程,即索引過程,包括:將資料轉換成文字、分析文字、將分析過的文字儲存到資料庫中這三個操作。

(1) 轉換成文字

在索引資料之前,首先必須將資料轉換成nutch 能夠處理的格式――純文字字元流。但是,在現實世界中,資訊多以富**(rich media)文件格式呈現:pdf、word、excel、html、xml等。為此,nutch採用了外掛程式機制(plugin),通過各種各樣的文件解 析器,將富**轉換成純文字字元流。文件解析器種類繁多,開發人員可以根據需要進行選擇,同時還可以自己修改或編寫,非常靈活方便。

(2) 分析文字

在對資料進行索引前,還需要進行預處理,對資料進行分析使之更加適合被索引。分析資料時,先將文字資料切分成一些大塊或者語彙單元 (tokens),然後對它們執行一些可選的操作,例如:在索引之前將這些語彙單元轉換成小寫,使得搜尋對大小寫不敏感;最有代表性的是要從輸入中去掉一 些使用很頻繁但卻沒有實際意義的詞,比如英文文字中的一些停止詞(a、an、the、in、on等)。同樣的,我們也需要分析輸入的語彙單元,以便從詞語 中去掉一些不必要的字母以找到它們的詞幹。這一處理過程稱為分析(analyze)。分析技術在索引和搜尋時都會用到,比較重要。

(3) 將分析過的文字儲存到資料庫中

對輸入的資料分析處理完成之後,就可以將結果寫入到索引檔案中。nutch採用的是lucene的索引格式,可以參考關於lucene的索引機制。lucene採用「倒排索引」的資料結果來儲存索引的。

nutch工作流程:搜尋程式分析

nutch的搜尋程式執行過程,可以從下面的步驟了解:

(1) http伺服器接收使用者傳送過來的請求。對應到nutch的執行**中就是乙個servlet,稱為查詢處理器(query handler)。查詢處理器負責響應使用者的請求,並將相應的html結果頁面返回給使用者。

(2) 查詢處理器對查詢語句做一些微小的處理並將搜尋的項(terms)**到一組執行索引搜尋器的機器上。nutch的查詢系統似乎比lucene簡單的多, 這主要是因為搜尋引擎的使用者對他自己所要執行的查詢內容有非常清晰的思路。然而,lucene的系統結構非常靈活,且提供了多種不同的查詢方式。看似簡單 的nutch查詢最終被轉換為特定的lucene查詢型別。每個索引搜尋器並行工作且返回一組有序的文件id列表。

(3) 現在存在這大量從查詢處理器返回過來的搜尋結果資料流。查詢處理器對這些結果集進行比較,從所有的結果查詢出匹配最好的那些。如果其中任何乙個索引搜尋器在1~2秒之後返回結果失敗,該搜尋器的結果將被忽略。因此,最後列表由操作成功的搜尋器返回的結果組成

nutch工作流程簡介

先用一幅圖來形容nutch的工作流程 一 抓取部分 網路爬蟲 1.建立初始url集 2.將url集注入crawldb資料庫 inject包 根據crawldb資料庫建立抓取列表 generate 執行抓取,獲取網頁資訊 fetch 更新資料庫,把獲取到的頁面資訊存入資料庫中 updatedb 重複進...

Struts工作流程

文章分類 招聘求職 乙個使用者的請求是通actionservlet來處理和 的。那麼,actionservlet如何決定把使用者請求 給哪個action物件呢?這就需要一些描述使用者請求路徑和action衍射關係的配置資訊了。在struts中,這些配置對映資訊都儲存在特定的xml檔案struts c...

zf工作流程

zend controller是使用mvc模式來構建乙個站點的基礎。zend controller體系是乙個輕量的,模組化和可擴充套件的體系。它只提供最核心的必要的部分,允許開發者有很大的自由來靈活地構建自己的站點。使用zend controller的站點,其檔案組織和 結構會比較相似。zend c...