?終于!我把
Nutch0.9
的安裝文檔貼出來了
首先提醒的是,按照這個步驟做還是會遇到各種莫名奇妙的問題,沒關系,按照步驟查找,一定有地
方出錯了,從出錯的地方重新做吧。 ( 連我自己每次重新安裝的時候還是會遇到各種問題,所以過程
一定要細心啊!
)
???
直接上過程:
1 、首先,我的配置: JDK1.6 , Tomcat6.0 , Nutch0.9
2 、添加 JAVA_HOME 和 CATALINA_HOME 系統變量 ( 這個如果真不會的話自己百度吧 )
3 、安裝 Cygwin 。
???Nutch 最初是在 Linux 系統下開發的,所以要在 windows 環境下部署,必須使用這個軟件來模擬仿真
系統環境。
????????
下載了
Cygwin
后,雙擊
setup.exe
運行,在“選擇下載資源”的對話框處有幾個選項:從
Internet 安裝、下載不安裝、從本地安裝。一般是第一個選項,如果已經安裝包已經下載到了本地,
那么選擇第 三個。之后設置好安裝路徑按默認的設置安裝即可。 ??
安裝成功運行如圖:
?
4 、 Nutch 是用 Java 語言開發的,在運行 Nutch 之前,必須告訴 Nutch 系統的 JDK 在哪。所以還需要設置
一個環境變量 NUTCH_HOME ,值同 JAVA_HOME 一致。
設置好了可以通過 Cygwin 測試 Nutch 是否可以運行。
?????1.? 運行 Cygwin 。
???? 2.? 輸入: cd? /cygdrive/*/nutch-0.9 (nutch 所在的路徑 ) PS : Cygwin 不支持 Unicode 字符
集,所以在設置 Nutch 路徑時,要保證其中沒有中文字符
???? 3.? 測試 Nutch 命令: bin/nutch 。如果 Nutch 安裝正確,則此命令會返回所有的 Nutch 可執行命
令結果
?
這時 Nutch 已經可以運行,通過 Cygwin 運行 Nutch 的底層命令,已經可以進行抓取、索引、排序、檢索等功能。但是做進一步的開發還需要進一步的修改。
?
??? 5
、將
Nutch
導入
Eclipse
?????
同導入其他
Eclipse
工程的過程一樣,不過要注意幾點:
????? (1)
將
Nutch
的配置文件加入到工程的
Librares
中,在
Libraries
選擇
Add Classic Folder
。并在第
四個面
板“
Order and Export
”中,把
conf
置頂
??????(2)
將
output dir
改為:
tmp_build
??????(3)
導入完成
??????(4)
但編譯還是不會通過的,因為
Nutch
包含的
rtf
和
mp3
包和
Nutch
使用的是不同的開源協議,所以
我們需要單獨下載這兩個包,把他們添加進工程中。下載地址為:
??????
http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-mp3/lib/
?
???????
http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-rtf/lib/
?
?
????? 6 、 Nutch 的配置文件
????? Nutch 的基本配置文件都在 conf 文件夾下,之前已經把它添加到 Class Folder 中了
????? nutch-default.xml :我們會用到最多的配置文件,一定要好好讀讀其中的內容
????? crawl-urlfilter.txt : Nutch 抓取是的一些策略設置
????? nutch-site.xml :抓取時提交給被爬行網站的信息
????? ………………
????? 最好自己都讀一下這些配置文件的內容并了解它們的作用
?
????? 7 、建立網頁抓取入口
????? 在工程文件夾下新建一個文本文件做為爬蟲抓取網頁的入口: weburl.txt 。
????? 這里我是在 Tomcat 下部署了一個網站用做測試,各位照樣子填吧
????? http://localhost:8080/computernetwork/index.html
?
?
????? 8 、修改配置文件
????? (1) 打開 conf 下的 nutch-default.xml 文件,這里我們要修改其中的一個屬性: plugin.folders 。
????? 把它修改為“ .\plugins ”。它的設置告訴 Nutch 應該到哪里去查找插件。
?
????? (2)
????? 修改 crawl-urlfilter.txt :
?
# skip image and other suffixes we can't yet parse
-\.
(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|
exe|jpeg|JPEG|bmp|BMP|swf|doc)$
這是 Nutch 抓取網頁時默認忽略的文件類型
?
# accept hosts in MY.DOMAIN.NAME
#+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
這是 Nutch 抓取是的限制訪問策略。比如我的是: +^http:// localhost:8080/computernetwork/
那么如果抓取的網頁中含有鏈接到其他站點的 URL , Nutch 不會去抓取這些網頁。
?
?
(3)
修改
nutch-site.xml
<name>http.agent.name</name>
<value>Local</value>
<description>HTTP 'User-Agent' request header. MUST NOT be empty - please set this to a single word uniquely related to your organization. NOTE: You should also check other related properties:
http.robots.agents
http.agent.description
http.agent.url
http.agent.email
http.agent.version
and set their values appropriately.
</description>
</property>
<property>
<name>http.agent.description</name>
<value> Local web</value>
<description>Further description of our bot- this text is used in
the User-Agent header. It appears in parenthesis after the agent name.
</description>
</property>
<property>
<name>http.agent.url</name>
<value>http://MyCom.com</value>
<description>A URL to advertise in the User-Agent header. This will appear in parenthesis after the agent name. Custom dictates that this should be a URL of a page explaining the purpose and behavior of this crawler.
</description>
</property>
<property>
<name>http.agent.email</name>
<value> Your mail@*.com</value>
<description>An email address to advertise in the HTTP 'From' request header and User-Agent header. A good practice is to mangle this address (e.g. 'info at example dot com') to avoid spamming.
</description>
</property>
?
?
?
9 、配置 Eclipse 運行參數
“ Run as ”— > “ Run Configuration ” — > “ Java Application ” ????
Arguments面板中:
在 Program arguments 中,參數為:
weburl.txt? -dir? Local – depth 5 – topN 100 – threads 100
?? 指的是爬蟲爬取網頁的地址入口在 weburl.txt 中設置,爬取的網頁、索引等信息存在本地 Local 文
件 夾中,爬蟲爬取的深度為: 5 ,每層只爬取前 100 個網頁,同時開 100 個線程進行爬取。
?
在 VM arguments 中,設置參數為:
??? -Dhadoop.log.dir=logs – Dhadoop.log.file=hadoop.log – Xmx512m
??? 這設置的是爬取過程的 Log 日志記錄地址。另外,爬取網頁過多時 Nutch 會出現 JavaVM 溢出的錯
誤, 因此經常還需在此處設置 JavaVM 參數,如: -Xmx512m ,即為 JAVA 虛擬機分配內存大小為 512M 。
?
?
10 、運行。
運行之后,在 Nutch 中的 Local 文件夾下會生成 5 個文件夾:
??? crawldb :下載的 URL 及下載日期,用于存放頁面更新的檢查時間。
??? linkdb :存放 URL 的互聯關系,是下載完成后分析得到的。
??? segments: 存放抓取的頁面。下面的子目錄數與獲取頁面層數有關。通常是一層一個文件夾。
??? indexs :存放每次下載的獨立索引目錄。
??? index :符合 Lucene 格式的索引目錄,是 indexs 里所有 index 合并后的完整索引。
?
11 、部署到 tomcat
(1) 打開 ANT 面板,打開添加 Buildfiles 對話框,將 Nutch 的 build.xml 添加進來。
?
(2) 重新運行 job ( default )或者 war 。此處會出現一個 build failed 錯誤,出現在文件中的:
<touch datetime="01/25/1971 2:00 pm">
????? <fileset dir="${conf.dir}" includes="**/*.template"/>
</touch>
??? 原因是因為在 Nutch 工程中沒有 *.template 文件,所以可以把這幾句刪除掉 ( 也不需要去下載這
幾個文件。如果使用了這幾個文件,每次編譯后曾經修改過的配置文件會被改回模板中的原始值。 )
?
(3) 將 build 文件夾下的 nutch-0.9.war 復制到 CATALINA_HOME 下的 webapps 下,重新啟動 Tomcat ,將生
成的 nutch-0.9 文件夾放到 ROOT 文件夾下。
????? 訪問: http://localhost:8080/nutch-0.9
(我是將 nutch 文件夾下的所有文件直接放在了 ROOT 文件夾下,所以直接訪問 http://localhost:8080/ )
?
?
?
12 、開始搜索
在 CATALINA_HOME\webapps\ROOT\nutch-0.9\WEB-INF\classes 下,找到 nutch-site.xml ,
添加屬性:
<property>?
?<name>searcher.dir</name>
??????? <value>E:\nutch-0.9\Local</value>----------
注:
nutch
工程下抓取時設置的文件夾位置
</property>
這個屬性告訴
Tomcat
到哪里去找
Nutch
索引。
?
?
?
------ 想搜索嗎? No !還有東西要改!
?
這時要是直接搜索,
Tomcat
會提示你:
org.apache.jasper.JasperException: /search.jsp(151,22) Attribute value? language + "/include/header.html" is quoted with " which must be escaped when used within the value
?
找到 search.jsp 下的 151 行,把引號轉義吧。。。。
<jsp:include page="<%= language + \"/include/header.html\"%>"/>
?
?
想搜索嗎?可以試一下
?
結果是——英文可以了,但是中文會出現亂碼
?
還得改。。。。那就改吧
?
在 CATALINA_HOME\conf 下找到 server.xml
修改 Connector port="8080" protocol="HTTP/1.1" 屬性中的值,添加兩句:
URIEncoding="UTF-8" useBodyEncodingForURI="true"
?
?
----------------------------------------
Oh My God
!終于可以搜了!!!撒花慶祝吧!這里是真的可以了
?
?
可是只有這些嗎?
No !這只是搭建一個基本的基于Nutch的搜索平臺。實際上基于Nutch還有很多可以做和擴展。
PS :這些都是百度、 Google 出來的各種方法的整理,本人已經實踐過多次,絕對可以部署實施,但是過程中可能還是會出現各種問題,大家耐心的修改吧!
由于時間稍久,中間可能存在疏漏,而且對 Nutch 學習也并不深入,如發現錯誤,歡迎大家交流指正!
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
