`
cocoIT
  • 浏览: 50993 次
  • 性别: Icon_minigender_1
  • 来自: 福建
文章分类
社区版块
存档分类
最新评论

Nutch 教程

 
阅读更多

介绍

Apache Nutch是一个用Java编写的开源网络爬虫。通过它,我们就能够自动地找到网页中的超链接,从而极大地减轻了维护工作的负担,例如检查那些已经断开了的链接,或是对所有已经访问过的网页创建一个副本以便用于搜索。接下来就是Apache Solr所要做的。Solr是一个开源的全文搜索框架,通过Solr我们能够搜索Nutch已经访问过的网页。幸运的是,关于Nutch和Solr之间的整合在下方已经解释得相当清楚了。

Apache Nutch对于Solr已经支持得很好,这大大简化了Nutch与Solr的整合。这也消除了过去依赖于Apache Tomcat来运行老的Nutch网络应用以及依赖于Apache Lucene来进行索引的麻烦。只需要从这里下载一个二进制的发行版即可。


步骤

  • 这篇教程描述了Nutch 1.x(当前版本是1.6)的安装和使用。关于如何编译和安装Nutch 2.x,请查看Nutch2Tutorial

1.从二进制发行包安装Nutch

  • 这里下载二进制包(apache-nutch-1.X-bin.zip)。
  • 解压缩您的Nutch包。那应该会有一个新文件夹apache-nutch-1.X
  • cd apache-nutch-1.X/

从现在开始,我们将会使用${NUTCH_RUNTIME_HOME}来代替当前目录(apache-nutch-1.X/)。

从源代码安装Nutch

高级用户也可能会使用源代码发行包:

  • 下载一个源代码包(apache-nutch-1.X-src.tar.gz
  • 解压缩
  • cd apache-nutch-1.X/
  • 在这个目录里运行ant(参见:RunNutchInEclipse
  • 现在那会有一个目录runtime/local,它包含了准备使用的Nutch安装

当使用源代码包时,我们会用${NUTCH_RUNTIME_HOME}代替目录apache-nutch-1.X/runtime/local/。记住这些:

  • 配置文件在apache-nutch-1.X/runtime/local/conf/目录里面
  • ant clean将会移除这个目录(并保留被更改的配置文件的备份)

2.检验您的Nutch安装

  • 运行”bin/nutch“。如果您能看见下列内容说明您的安装是正确的:

Usage: nutch [-core] COMMAND

一些解决问题的提示:

  • 如果您看见”Permission denied”那么请运行下列命令:

chmod +x bin/nutch

  • 如果您看见JAVA_HOME没有设置那么请设置JAVA_HOME环境变量。在Mac上,您可以运行下述命令或者把它添加到~/.bashrc里面去:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home


3.抓取您的第一个网站

  • 将您的代理的名称添加到conf/nutch-site.xmlhttp.agent.name属性的Value字段里,例如:

<property>
<name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>

  • mkdir -p urls
  • cd urls
  • touch seed.txt

这样子就在urls/目录下创建了一个文本文档seed.txt。它需要包含像下面这样的内容(每行一个网站URL来告诉Nutch您想要抓取的网站):

http://nutch.apache.org/

编辑文件conf/regex-urlfilter.txt并且替换

# accept anything else
+.

为一条与您要抓取的域名相对应的正则表达式。例如,如果您想要限制为抓取nutch.apache.org这一域名,这一行读起来应该像是这样子的:

+^http://([a-z0-9]*\.)*nutch.apache.org/

这会包括在nutch.apache.org下的任何URL。

3.1使用抓取命令

现在我们已经准备好开始一次抓取,可以使用以下的参数:

  • -dirdir指定用于存放抓取文件的目录名称。
  • -threadsthreads决定将会在获取是并行的线程数。
  • -depthdepth表明从根网页开始那应该被抓取的链接深度。
  • -topNN决定在每一深度将会被取回的网页的最大数目
  • 运行下面的命令:

bin/nutch crawl urls -dir crawl -depth 3 -topN 5

  • 现在您应该能够看见下列目录被创建了:

crawl/crawldb
crawl/linkdb
crawl/segmentsThis

  • 请记住:如果您有一个已经设置好了的Solr并且想要建立索引到那里面去,您必须添加-solr <solrUrl>参数到您的crawl命令里面。例如:

bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5

  • 然后请直接跳到后面–为搜索设置Solr

通常一开始测试一个配置都是通过抓取在较浅深度来进行,大大地限制了每一级所获取的网页数(-topN),并且观察输出来检查所需要的页面是否已经得到以及不需要的页面是否被阻挡。要想查看某一配置是否正确,对于全文搜索来说较为适当的深度设置大约是10左右。每一级所获取的网页数 (-topN)可以从几万上到几百万,这取决于您的资源。


3.2使用特别的命令对整个网络进行抓取

  • 请记住:如果您先前更改并覆盖了文件conf/regex-urlfilter.txt在这里您需要将它改回去。

整个网络的抓取被设计成用来处理那些可能需要耗费几个星期来完成,在许多台机器上运行的非常大的抓取。这也允许在抓取的过程中进行更多的控制,还有增量抓取。最重要的是要记住整个网络的抓取并不一定意味着要抓取整个万维网。我们可以限制整个网络的抓取只是抓取我们列出的想要抓取的URL。这是通过使用一个就像我们用crawl命令时一样的过滤器来完成的。


循序渐进之–概念

Nutch数据是由这些组成的:

  • 抓取数据库,或者说是crawldb。它包含了关于每一个Nutch已知的URL的信息,包括它是否已经被获取,甚至是何时被获取的。
  • 链接数据库,或者说是linkdb。它包含了每一个已知URL的链接,包括源的URL以及链接的锚文本。
  • 一系列的分段,或者说是segments。每一个segments都是一组被作为一个单元来获取的URL。segments是它本身这个目录以及它下面的子目录:
    • 一个crawl_generate确定了将要被获取的一组URL;
    • 一个crawl_fetch包含了获取的每个URL的状态;
    • 一个content包含了从每个URL获取回来的原始的内容;
    • 一个parse_text包含了每个URL解析以后的文本;
    • 一个parse_data包含来自每个URL被解析后内容中的外链和元数据;
    • 一个crawl_parse包含了外链的URL,用来更新crawldb。

循序渐进之–用一组URL列表确定crawldb
选择1:从DMOZ数据库自举。

由injector添加URL到crawldb里。让我们从DMOZ开放式分类目录添加URL吧。首先我们必须下载并且解压缩这个DMOZ所有网页的列表(这是一个200多MB的文件,所以这会消耗几分钟)。

wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz
gunzip content.rdf.u8.gz

接下来我们选择这些网页当中随机的一些子集(我们使用随机的子集所以所有在跟着这一个教程做的人就不会伤害到同样的网站)。DMOZ包含了大约三百万个URL。我们从每5000个URL中选择出一个,因此我们就有大约1000个URL:

mkdir dmoz
bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 -subset 5000 > dmoz/urls

这一分析器也需要几分钟来完成,因为它必须要分析整个文件。最后,我们用这些选出的URL来初始化crawldb。

bin/nutch inject crawl/crawldb dmoz

现在我们有了一个大约有1000个未被获取的URL的网络数据库。

选择2:从初始列表里自举。

这一选项不为人们所了解的地方在于创建初始列表并覆盖在urls/目录里。

bin/nutch inject crawl/crawldb urls


循序渐进之–获取

要获取,我们首先要从数据库里产生一个获取的列表。

bin/nutch generate crawl/crawldb crawl/segments

这会为所有预定要被获取的网页产生一个获取列表。获取列表放在一个新创建的分段目录里。分段目录的名称取决于它被创建时的时间。

我们将这个分段的名字放在shell的变量s1里面:

s1=`ls -d crawl/segments/2* | tail -1`
echo $s1

现在我们能以下面的命令在这个分段里进行获取:

bin/nutch fetch $s1

然后我们就能解析条目:

bin/nutch parse $s1

当这一切完成以后,我们就以获取回来的结果更新数据库:

bin/nutch updatedb crawl/crawldb $s1

现在,数据库包含了刚刚更新的条目的所有初始页,除此之外,新的网页条目对于链接到初始的集合来进行新条目的发现是相符合的。
所以我们对包含得分最高的1000页提取出来产生一个新的分段:

bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2
bin/nutch fetch $s2
bin/nutch parse $s2
bin/nutch updatedb crawl/crawldb $s2

让我们再来获取一次吧:

bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s3=`ls -d crawl/segments/2* | tail -1`
echo $s3
bin/nutch fetch $s3
bin/nutch parse $s3
bin/nutch updatedb crawl/crawldb $s3

通过这一点我们已经获取了几千页的网页。让我们索引它们吧!


循序渐进之–反向链接

在我们进行索引之前,我们首先要反转所有的链接,以便我们能够以这些网页来索引进入的锚文本。

bin/nutch invertlinks crawl/linkdb -dir crawl/segments

我们现在准备好要用Apache Solr进行搜索了。


4.为搜索设置Solr

  • 这里下载二进制文件。
  • 解压缩到$HOME/apache-solr-3.X,从现在起,我们将会用${APACHE_SOLR_HOME}代替它。
  • cd ${APACHE_SOLR_HOME}/example
  • java -jar start.jar

5.检验Solr的安装

在您启动Solr管理员控制台以后,您应该能够访问下列这些链接:

http://localhost:8983/solr/admin/
http://localhost:8983/solr/admin/stats.jsp


6.将Solr与Nutch进行整合

我们已经将Nutch和Solr正确地安装设置好了。并且Nutch已经从URL列表里创建并抓取了数据。以下步骤是一个以Solr来搜索要搜索的链接的代表:

  • cp ${NUTCH_RUNTIME_HOME}/conf/schema.xml ${APACHE_SOLR_HOME}/example/solr/conf/
  • 在目录${APACHE_SOLR_HOME}/example下使用命令”java -jar start.jar“来重启Solr
  • 运行Solr索引命令:

bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/*

运行solrindex的一些细节已经被改变了。linkdb现在是可选的,所以您需要在命令行中用一个”-linkdb”明确地表示它。
这会发送所有的抓取数据给Solr进行索引。更多信息请运行命令bin/nutch solrindex。
如果一切顺利,我们现在已经准备好在http://localhost:8983/solr/admin/进行搜索。如果您想要看到有Solr创建的原始HTML索引,您需要更改schema.xml当中定义的content字段为:

<field name="content" type="text" stored="true" indexed="true"/>


分享到:
评论

相关推荐

    Nutch相关框架视频教程

    资源名称:Nutch相关框架视频教程资源目录:【】Nutch相关框架视频教程1_杨尚川【】Nutch相关框架视频教程2_杨尚川【】Nutch相关框架视频教程3_杨尚川【】Nutch相关框架视频教程4_杨尚川【】Nutch相关框架视频教程5_...

    Nutch中文教程nutcher.zip

    Nutch教程——导入Nutch工程,执行完整爬取 Nutch流程控制源码详解(bin/crawl中文注释版) Nutch教程——URLNormalizer源码详解 Nutch参数配置——http.content.limit ...

    Nutch入门教程 高清 带书签

    这个“Nutch入门教程 高清 带书签”的资源,很显然是为了帮助初学者快速理解并掌握Nutch的基本操作和核心概念。下面,我们将深入探讨Nutch的相关知识点。 一、Nutch简介 Nutch是一个强大的Web爬虫框架,它提供了从...

    nutch使用&Nutch;入门教程

    入门教程”将带你深入理解Nutch的基本概念、工作流程以及如何实际操作它来执行网络爬取任务。 一、Nutch简介 Nutch是一个基于Java的开源搜索引擎,其主要功能包括网页抓取、链接分析、网页排名和索引。Nutch的设计...

    Nutch入门教程.pdf

    以上内容构成了Nutch入门教程的核心知识点,从简介、安装配置、初体验、基本原理、分析方法、分布式文件系统以及应用等多方面,详细介绍了Nutch框架及其使用方法,为对搜索引擎感兴趣的用户提供了一个全面的学习资源...

    nutch入门教程

    ### Nutch入门教程知识点解析 #### 1. Nutch简介 **1.1 什么是Nutch** Nutch是一个开源的搜索引擎框架,完全基于Java开发,旨在帮助用户构建和运行自己的搜索引擎。它提供了一系列的工具和服务,使用户能够从...

    Nutch 配置

    在这个例子中,尽管Nutch教程建议创建一个专门的Nutch用户,但为了与已配置好的Hadoop集群兼容,选择在已存在的Hadoop用户下进行配置。 3. **安装Ant**:Nutch的编译需要Ant工具,通过执行 `sudo apt-get install ...

    Lucene.Nutch搜索引擎开发

    4. **Nutch教程PPT**: PPT形式的教学材料通常以简洁明了的方式呈现关键知识点,可能包括Nutch的工作原理、架构设计、主要模块介绍(如Crawldb、Segment、Indexer等)、API使用方法以及实战案例。这有助于读者快速...

    Nutch相关框架视频教程(20集)

    教程名称:Nutch相关框架视频教程(20集)课程目录:【】Nutch相关框架视频教程01【】Nutch相关框架视频教程02【】Nutch相关框架视频教程03【】Nutch相关框架视频教程04【】Nutch相关框架视频教程05【】Nutch相关...

    网络爬虫教程

    ### 知识点详解:Nutch教程——网络爬虫实现 #### 一、Nutch简介与准备工作 **Nutch** 是一个高度可扩展且开放源代码的网络爬虫项目,它可以抓取整个互联网上的网页,并对其进行索引。Nutch基于Hadoop构建,非常...

    Nutch相关框架视频教程 讲义 杨尚川

    ### Nutch相关框架知识点概述 #### 一、Nutch与Hadoop、Tika、Gora的关系 **Nutch**是一个开源的Web抓取框架,它不仅能够帮助开发者抓取网络上的数据,还促进了多个重要开源项目的诞生和发展。通过Nutch项目,衍生...

    nutch2.3.1安装文档教程

    ### Nutch 2.3.1 安装与配置指南 #### 一、配置 ant 环境 在安装 Nutch 之前,首先需要确保环境中已经安装了 Apache Ant 工具,因为 Nutch 的构建过程依赖于 Ant。以下是具体步骤: 1. **下载 ant**: - 访问 ...

    nutch2.2.1安装步骤.docx

    Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包...

    nutch

    《Nutch 入门教程.pdf》这本书籍或文档应该包含了 Nutch 的基础知识、安装配置、使用示例以及常见问题解答等内容。通过阅读此教程,你可以了解如何搭建 Nutch 爬虫环境,编写自定义插件,以及进行定制化抓取和索引。...

    Nutch+solr + hadoop相关框架搭建教程

    然后,根据教程配置 Nutch、Solr 和 Hadoop 的环境,包括修改 `nutch-site.xml` 配置文件,添加 HTTP 代理等。 总的来说,Nutch+Solr+Hadoop 的框架搭建涉及多个组件的安装、配置和协同工作。理解这些组件的功能和...

    nutch帮助文档;nutch学习 入门

    - 开源教程:网上有许多开源的Nutch学习教程和视频课程,可供参考。 通过以上学习,你可以逐步掌握Nutch的基础知识和操作,为进一步深入研究搜索引擎技术和大数据分析打下坚实基础。在实践中不断探索,你会发现...

Global site tag (gtag.js) - Google Analytics