Nutch的編譯安裝需要JDK、Ant等環(huán)境,Nutch的主要配置項(xiàng)在nutch-default.xml這個(gè)文件中,自定義配置文件nutch-site.xml中配置的屬性會(huì)覆蓋nutch-default.xml中對(duì)應(yīng)的屬性,可以根據(jù)實(shí)際需要對(duì)其進(jìn)行配置。
在Oracle官網(wǎng)http://www.oracle.com/technetwork/java/javase/downloads/index.html下載JDK,本教程下載的是jdk-8u45-linux-x64.tar.gz。解壓JDK包:
tar zxvf jdk-8u45-linux-x64.tar.gz
解壓后得到j(luò)dk1.8.0_45這個(gè)文件夾,先查看/usr/lib/路徑下有沒(méi)有jvm這個(gè)文件夾,若沒(méi)有,則新建一個(gè)jvm文件夾:
mkdir /usr/lib/jvm
將當(dāng)前解壓得到的jdk1.8.0_45復(fù)制到/usr/lib/jvm中:
mv jdk1.8.0_45 /usr/lib/jvm
打開(kāi)profile設(shè)置環(huán)境變量:
vim /etc/profile
在profile的末尾加入以下內(nèi)容:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
然后使用以下命令使得環(huán)境變量生效:
source /etc/profile
到此為止,JDK就安裝完成了。查看JDK的版本:
java –version
若以上命令沒(méi)有成功顯示版本信息,那有可能是之前的操作出現(xiàn)問(wèn)題,請(qǐng)仔細(xì)檢查之前的操作。
到Ant官網(wǎng)http://ant.apache.org/bindownload.cgi下載最新版的Ant,本教程下載的包為apache-ant-1.9.6-bin.zip。使用以下命令解壓安裝包:
unzip apache-ant-1.9.6-bin.zip
解壓后可得到apache-ant-1.9.5這個(gè)文件夾,將其移動(dòng)到/usr/local/文件夾中:
mv apache-ant-1.9.5 /usr/local/
打開(kāi)profile設(shè)置環(huán)境變量:
vim /etc/profile
在profile文件末尾加入以下內(nèi)容:
export ANT_HOME=/usr/local/ant
export PATH=$PATH:$ANT_HOME/bin
使用以下命令使得環(huán)境變量生效:
source /etc/profile
查看Ant版本:
ant -version
請(qǐng)參考Nutch 1.10入門(mén)教程(一)——Nutch簡(jiǎn)介下載Nutch1.10的源碼,若官網(wǎng)最新版已經(jīng)高于1.10,則需要在歷史版本中進(jìn)行下載。本教程下載的Nutch包為apache-nutch-1.10-src.zip。
使用以下命令解壓源碼包:
unzip apache-nutch-1.10-src.zip
解壓后得到apache-nutch-1.10這個(gè)文件夾,然后進(jìn)入文件夾:
cd apache-nutch-1.10
打開(kāi)Nutch的默認(rèn)配置文件:
vim conf/nutch-default.xml
找到http.agent.name這個(gè)屬性,將其拷貝到conf/nutch-site.xml中,并修改value,修改后的nutch-site.xml如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>myNutch</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>
</configuration>
http.agent.name這個(gè)屬性是用于標(biāo)記爬蟲(chóng)的,便于被爬的網(wǎng)站對(duì)其進(jìn)行識(shí)別。
nutch-site.xml中配置的屬性會(huì)覆蓋nutch-default中的默認(rèn)屬性,在這里我們僅修改http.agent.name這個(gè)屬性,其它的不作改變。
到此,我們就配置好Nutch了,接著,在Nutch的主目錄使用以下命令對(duì)源碼進(jìn)行編譯:
ant
首次編譯過(guò)程會(huì)耗費(fèi)較多時(shí)間,因?yàn)樾枰螺d較多的依賴(lài)包,具體時(shí)間根據(jù)實(shí)際網(wǎng)絡(luò)情況而定,快的話(huà)需要5-10分鐘,慢的話(huà)需要20分鐘以上。
編譯開(kāi)始時(shí)會(huì)報(bào)如下警告:
Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.
這個(gè)警告不影響編譯結(jié)果,因此可以忽略。
編譯過(guò)程中也有可能因?yàn)榫W(wǎng)絡(luò)問(wèn)題而出現(xiàn)編譯失敗,只需要使用如下命令清除上次編譯結(jié)果(不會(huì)刪除已經(jīng)下載好的依賴(lài)包):
ant clean
然后再使用如下命令進(jìn)行編譯:
ant
在網(wǎng)絡(luò)較差的情況下,可能會(huì)重復(fù)上面兩步操作多次。
當(dāng)出現(xiàn)如下類(lèi)似信息時(shí),也就意味著編譯成功了:
BUILD SUCCESSFUL
Total time: 1 minute 7 seconds
Nutch編譯成功之后,會(huì)在主目錄下生成一個(gè)runtime文件夾。其中包含deploy和local兩個(gè)子文件夾。deploy用于分布式抓取,而local用于本地單機(jī)抓取。本節(jié)內(nèi)容先講解使用本地單機(jī)抓取,分布式抓取放到后續(xù)教程。
進(jìn)入local文件夾,再進(jìn)入bin文件夾。這里包含兩個(gè)腳本文件,一個(gè)是nutch,另一個(gè)是crawl。其中,nutch包含了所需的全部命令,而crawl主要用于一站式抓取。
更多建議: