nutch是一个开源的网络爬虫项目,更具体些是一个爬虫软件,可以直接用于抓取网页内容。
现在nutch分为两个版本,1.x和2.x。1.x最新版本为1.7,2.x最新版本为2.2.1。两个版本的主要区别在于底层的存储不同。
1.x版本是基于hadoop架构的,底层存储使用的是hdfs,而2.x通过使用apache gora,使得nutch可以访问hbase、accumulo、cassandra、mysql、datafileavrostore、avrostore等nosql。
nutch1.x从1.7版本开始不再提供完整的部署文件,只提供源代码文件及相关的build.xml文件,这就要求用户自己编译nutch,而整个nutch2.x版本都不提供编译完成的文件,所以想要学习nutch2.2.1的功能,就必须自己手动编译文件。
有可能你会得到如下错误:
解决办法:
下载sonar-ant-task-2.1.jar,将其拷贝到apache-nutch-2.2.1目录下面
修改build.xml,引入上面添加的jar包:
nutch使用ivy进行构建,故编译需要很长时间,如果编译时间过长,建议修改maven仓库地址,修改方法:
通过用<code>http://mirrors.ibiblio.org/maven2/</code>替换<code>ivy/下ivysettings.xml</code>中的<code>http://repo1.maven.org/maven2/</code>来解决。代码位置为:
编译之后的目录如下:
可以看到编译之后多了两个目录:build和runtime
由于nutch2.x版本存储采用gora访问cassandra、hbase、accumulo、avro等,需要在该文件中制定gora属性,比如指定默认的存储方式<code>gora.datastore.default= org.apache.gora.hbase.store.hbasestore</code>,该属性的值可以在nutch-default.xml中查找<code>storage.data.store.class</code>属性取得,在不做gora.properties文件修改的情况下,存储类为<code>org.apache.gora.memory.store.memstore</code>,该类将数据存储在内存中,仅用于测试目的。
修改 <code>conf/nutch-site.xml</code>
修改 <code>ivy/ivy.xml</code>
修改 <code>conf/gora.properties</code>,确保hbasestore被设置为默认的存储,
由于建索引的时候需要使用solr,因此我们需要安装并启动一个solr服务器。
验证是否启动成功
将<code>apache-nutch-2.2.1/conf/schema-solr4.xml</code>拷贝到<code>solr-4.8.0/solr/collection1/conf/schema.xml</code>,并在<code><fields>...</fields></code>最后添加一行:
重启solr,
编译后的脚本在 runtime/local/bin 目录下,可以运行命令查看使用方法:
crawl命令:
nutch命令:
接下来可以抓取网页了。