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