您好,登錄后才能下訂單哦!
這篇文章主要講解了“ Nutch2.2.1介紹及用法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ Nutch2.2.1介紹及用法”吧!
Nutch是一個(gè)開源的網(wǎng)絡(luò)爬蟲項(xiàng)目,更具體些是一個(gè)爬蟲軟件,可以直接用于抓取網(wǎng)頁(yè)內(nèi)容。
現(xiàn)在Nutch分為兩個(gè)版本,1.x和2.x。1.x最新版本為1.7,2.x最新版本為2.2.1。兩個(gè)版本的主要區(qū)別在于底層的存儲(chǔ)不同。
1.x版本是基于Hadoop架構(gòu)的,底層存儲(chǔ)使用的是HDFS,而2.x通過(guò)使用Apache Gora,使得Nutch可以訪問(wèn)HBase、Accumulo、Cassandra、MySQL、DataFileAvroStore、AvroStore等NoSQL。
Nutch2.x從1.7版本開始不再提供完整的部署文件,只提供源代碼文件及相關(guān)的build.xml文件,這就要求用戶自己編譯Nutch,而整個(gè)Nutch3.x版本都不提供編譯完成的文件,所以想要學(xué)習(xí)Nutch3.2.1的功能,就必須自己手動(dòng)編譯文件。
$ wget http://archive.apache.org/dist/nutch/2.2.1/apache-nutch-2.2.1-src.tar.gz $ tar zxf apache-nutch-2.2.1-src.tar.gz
$ cd apache-nutch-2.2.1 $ ant
有可能你會(huì)得到如下錯(cuò)誤:
Trying to override old definition of task javac [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found. ivy-probe-antlib: ivy-download: [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.
解決辦法:
下載sonar-ant-task-2.1.jar,將其拷貝到apache-nutch-2.2.1目錄下面
修改build.xml,引入上面添加的jar包:
<!-- Define the Sonar task if this hasn't been done in a common script --> <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> <classpath path="${ant.library.dir}" /> <classpath path="${mysql.library.dir}" /> <classpath><fileset dir="." includes="sonar*.jar" /></classpath> </taskdef>
Nutch使用ivy進(jìn)行構(gòu)建,故編譯需要很長(zhǎng)時(shí)間,如果編譯時(shí)間過(guò)長(zhǎng),建議修改maven倉(cāng)庫(kù)地址,修改方法:
通過(guò)用http://mirrors.ibiblio.org/maven2/替換ivy/下ivysettings.xml中的http://repo1.maven.org/maven2/來(lái)解決。代碼位置為:
<property name="repo.maven.org" value="http://repo1.maven.org/maven2/" override="false"/>
編譯之后的目錄如下:
? apache-nutch-2.2.1 tree -L 1 . ├── CHANGES.txt ├── LICENSE.txt ├── NOTICE.txt ├── README.txt ├── build ├── build.xml ├── conf ├── default.properties ├── docs ├── ivy ├── lib ├── runtime ├── sonar-ant-task-2.1.jar └── src 7 directories, 7 files
可以看到編譯之后多了兩個(gè)目錄:build和runtime
由于Nutch3.x版本存儲(chǔ)采用Gora訪問(wèn)Cassandra、HBase、Accumulo、Avro等,需要在該文件中制定Gora屬性,比如指定默認(rèn)的存儲(chǔ)方式gora.datastore.default= org.apache.gora.hbase.store.HBaseStore,該屬性的值可以在nutch-default.xml中查找storage.data.store.class屬性取得,在不做gora.properties文件修改的情況下,存儲(chǔ)類為org.apache.gora.memory.store.MemStore,該類將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,僅用于測(cè)試目的。
這里,將其存儲(chǔ)方式改為HBase,請(qǐng)參考 http://wiki.apache.org/nutch/Nutch3Tutorial。
修改 conf/nutch-site.xml
<property> <name>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Default class for storing data</description> </property>
修改 ivy/ivy.xml
<!-- Uncomment this to use HBase as Gora backend. --> <dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />
修改 conf/gora.properties,確保HBaseStore被設(shè)置為默認(rèn)的存儲(chǔ),
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
因?yàn)檫@里用到了HBase,故還需要一個(gè)HBase環(huán)境,你可以使用Standalone模式搭建一個(gè)HBase環(huán)境,請(qǐng)參考 HBase Quick Start。需要說(shuō)明的時(shí),目前HBase的版本要求為 hbase-0.90.4。
由于建索引的時(shí)候需要使用Solr,因此我們需要安裝并啟動(dòng)一個(gè)Solr服務(wù)器。
$ wget http://mirrors.cnnic.cn/apache/lucene/solr/4.8.0/solr-4.8.0.tgz $ tar -zxf solr-4.8.0.tgz
$ cd solr-4.8.0/example $ java -jar start.jar
驗(yàn)證是否啟動(dòng)成功
用瀏覽器打開 http://localhost:8983/solr/admin/,如果能看到頁(yè)面,說(shuō)明啟動(dòng)成功。
將apache-nutch-2.2.1/conf/schema-solr4.xml拷貝到solr-4.8.0/solr/collection1/conf/schema.xml,并在<fields>...</fields>最后添加一行:
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
重啟Solr,
# Ctrl+C to stop Solr $ java -jar start.jar
編譯后的腳本在 runtime/local/bin 目錄下,可以運(yùn)行命令查看使用方法:
crawl命令:
$ cd runtime/local/bin $ ./crawl Missing seedDir : crawl <seedDir> <crawlID> <solrURL> <numberOfRounds>
nutch命令:
$ ./nutch Usage: nutch COMMAND where COMMAND is one of: inject inject new urls into the database hostinject creates or updates an existing host table from a text file generate generate new batches to fetch from crawl db fetch fetch URLs marked during generate parse parse URLs marked during fetch updatedb update web table after parsing updatehostdb update host table after parsing readdb read/dump records from page database readhostdb display entries from the hostDB elasticindex run the elasticsearch indexer solrindex run the solr indexer on parsed batches solrdedup remove duplicates from solr parsechecker check the parser for a given url indexchecker check the indexing filters for a given url plugin load a plugin and run one of its classes main() nutchserver run a (local) Nutch server on a user defined port junit runs the given JUnit test or CLASSNAME run the class named CLASSNAME Most commands print help when invoked w/o parameters.
接下來(lái)可以抓取網(wǎng)頁(yè)了。
感謝各位的閱讀,以上就是“ Nutch2.2.1介紹及用法”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) Nutch2.2.1介紹及用法這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。