天天看点

Nutch介绍及使用1. Nutch介绍2. 编译Nutch3. 修改配置文件4. 集成Solr4.1 下载,解压4.2 运行Solr4.3 修改Solr配置文件5. 抓取数据

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>&lt;fields&gt;...&lt;/fields&gt;</code>最后添加一行:

重启solr,

编译后的脚本在 runtime/local/bin 目录下,可以运行命令查看使用方法:

crawl命令:

nutch命令:

接下来可以抓取网页了。