應用已有的開源搜索引警(Nutch應用)
???Nutch作為一款剛剛誕生的開元web搜索引警,提供了除商業(yè)搜索引警外的一種新的選擇。個人,企業(yè)都可以通過Nutch來構(gòu)建適合于自己的搜索引警平臺,提供適合自己的搜索服務,而不必完全被動的接受商業(yè)搜索引警的各種制約。???Nutch的工作流程可以分為兩個大的部分:抓取部分和搜索部分。抓取程序抓取頁面并把抓取回來的數(shù)據(jù)進行反向索引,搜索程序則對反向索引進行搜索回答用戶的請求,索引是聯(lián)系這兩者的紐帶。
???首先要建立一個空的url數(shù)據(jù)庫,并且把起始根urls添加到url數(shù)據(jù)庫中(步驟一),依據(jù)url數(shù)據(jù)庫在新創(chuàng)建的segment中生成fetchlist,存放了待爬行的urls(步驟二),根據(jù)fetchlist從Internet進行相關網(wǎng)頁內(nèi)容的爬行抓取與下載(步驟三),隨后把這些抓取到的內(nèi)容解析成文本與數(shù)據(jù)庫(步驟四),從中提取出新的網(wǎng)頁連接url,并對url數(shù)據(jù)庫進行更新(步驟五),重復步驟一到五直到達到被指定的爬行抓取深度。以上構(gòu)成了Nutch的整個抓取過程,可以用一個循環(huán)來對其進行描述:生成-抓取-更新-循環(huán)。
???當抓取過程完成后,對抓取到的網(wǎng)頁進行反向索引,對重復的內(nèi)容與url進行剔除,然后對多個索引進行合并,為搜索建立統(tǒng)一的索引庫,而后用戶可以通過由tomcat容器提供的Nutch用戶界面提交搜索請求,然后由Lucene對索引庫進行查詢,并返回搜索結(jié)果給用戶,完成整個搜索過程。
???Nutch程序采用Java編寫,其運行環(huán)境需要一個Tomcat容器。本文運行環(huán)境以j2sdk1.4.2-12及tomcat-5.0.28為例。
???試用Nutch進行數(shù)據(jù)抓取。
???Nutch通過運行網(wǎng)絡爬蟲工具進行網(wǎng)絡內(nèi)容的抓取,它提供了爬行企業(yè)內(nèi)部網(wǎng)與整個互聯(lián)網(wǎng)兩種方式。
???先說爬行企業(yè)內(nèi)部網(wǎng)
???爬行企業(yè)內(nèi)部網(wǎng)適合于針對一小撮web服務器,并且網(wǎng)頁數(shù)在百萬以內(nèi)的情況。它使用crawl命令進行網(wǎng)絡爬行抓取,在進行爬行前,需要對Nutch進行一系列的配置,過程如下:
???首先需要建立一個目錄,并且在此目錄中創(chuàng)建包含起始根urls的文件。我們以爬行sohu網(wǎng)站為例來講述。
???#cd? /usr/local/nutch
???#mkdir? urls
???#touch urls/sohu
???因此文件urls/sohu的內(nèi)容為:http://www.sohu.com/。依據(jù)爬行網(wǎng)站的實際情況,可以繼續(xù)在此文件末尾添加其它url或者在url目錄里添加其它包含url的文件。需要注意的是Nutch7.0的版本中不需要創(chuàng)建目錄,直接創(chuàng)建包含起始根url的文件即可。
???接下來,要在config/crawl-urlfilter.txt文件,將中文MY.DOMAIN.NAME部分提環(huán)為準爬行的域名,并去掉前面的注釋。因此在本文中進行域名替換后的形式為:
???+^http://([a-z0-9]*\.)*sohu.com/
???文件config/crawl-urlfilter.txt主要用于限定爬行的url形式,其中url的形式使用正則表達式進行描述。
???然后,編輯文件conf/nutch-site.xml,并且包含以下內(nèi)容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>http:.agent.name</name>
<value>sohu.com</value>
<description>sohu.com</description>
</property>
</configuration>
???除http.agent.name外,在<configuration></configuration>間還包括http.agent.description,http.agent.url,http.agent.email這三項。
???最后開始爬行抓取。完成對Nutch的配置后,運行crawl命令進行爬行。在本文中爬行腳本為:
#bin/nutch crawl urls -dir sohu -depth 5 -topN 1000
另外,crawl還有一個參數(shù)項:threads,他設定并行爬行的進程數(shù)。在爬行過程中,可以通過Nutch日志文件查看爬行的進展狀態(tài),爬行完成后結(jié)果存放在sohu目錄里。
至此內(nèi)部網(wǎng)的過程就完成了,爬行整個互聯(lián)網(wǎng)將在下篇文章中講解。