这是半年前使用Nutch的时候写的.本文讲述了如何搭建一个可运行的Nutch系统.Nutch是个开源的建立搜索引擎的项目,功能很强大,有时间去研究研究还是很好的.
一.Nutch的安装
Nutch的安装比较简单,下面介绍在Linux下的安装步骤:(在Windows下也能运行,不过先得安装cygwin,一个在windows环境下模拟Linux的软件,具体安装步骤见 二.Cygwin的安装与使用,安装完之后的使用方法同Linux环境下使用)
下载:
可以去Apache的官方网页http://www.apache.org/dyn/closer.cgi/lucene/nutch/ 下载最新版的Nutch,目前最新版是nutch-0.7.1,45M大小。
解压:
下载的是一个压缩包,比如:nutch-0.7.tar.gz,由后缀名我们知道这是一个先经过打包再经过压缩的文件,所以在Linux下运行以下命令以解压:
gunzip nutch-0.7.tar.gz //解压缩,得到文件:nutch-0.7.tar
tar –xvf nutch-0.7.tar //解包,得到目录nutch-0.7
如果不出错的话,应该得到一个目录nutch-0.7,里面包含了nutch所有的源代码,文档等。
安装辅助软件(运行环境):
Nutch是用java写的一个开源项目,所以要使它正常运行必须安装JDK(也为了能修改nutch),Java 1.4.x以上版本,设置环境变量NUTCH_JAVA_HOME为java虚拟机的安装目录。
此外,还必须安装Apache's Tomcat 4.x 以上版本。
最后,想得到较好的运行效果,必须有至少1G的剩余空间和一个网速较快的网络。
运行以测试安装结果:
设置NUTCH_JAVA_HOME的值设为java的安装目录,即JAVA_HOME的值。(在JDK1.5中不设也能运行)
改变当前工作区为nutch-0.7(即:刚才的解包目录),运行以下命令:
bin/nutch
如果一切正常的话,会显示nutch的命令说明,比如:
Uage: nutch Commad ……
二.Cygwin的安装(使用Linux环境的用户可以直接阅读第三点)
cygwin 简介
(略)
cygwin下载
1. 下载setup.exe文件,然后运行选择“install from internet”,然后程序会自动从网上下载并安装。(考虑到网速问题,不推荐此方法)
2. 从北邮的ftp下载,地址:ftp:// openware.byr.edu.cn/mirro/cygwin
cygwin 安装
1. 双击“setup.exe”文件,出现如下安装界面:
2. 点击“下一步”
3. 假定你已经从ftp上下载了cygwin的安装镜像(见cygwin的下载),选择“install from Local Directory”。否则选择“install from internet”(不推荐)。然后点击“下一步”
4. 选择安装路径,比如我装在“C:\cygwin”,点击“下一步”
5. 选择本地镜像路径,就是你下载的cygwin的安装镜像的路径。点击“下一步”
6. 安装向导显示出所要安装的内容列表,用户可以根据自己的实际需要来决定安装哪些程序。点击循环箭头图标后面的文字,可以更改安装的方式,常用的方式有Default(表示只安装缺省的安装项)、Install(表示安装全部程序,空间要求较大)、Reinstall(表示重新安装程序)。推荐选择“Install”方式,一步到位,以免后扰,点击“下一步”后,就开始正式的安装了
7. 最后出现如下所示的窗口,点击“完成”后,Cygwin安装完毕。
8. 安装完毕,在桌面上生成一个快捷方式:cygwin,双击它就能运行程序了。
三.nutch 使用
总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取程序和搜索程序的接口是索引。两者都使用索引中的字段。实际上搜索程序和抓取程序可以分别位于不同的机器上。
网页的抓取主要分为2种:Intranet crawling和 Whole-web crawling。从名字可以很容易明白他们抓取的范围。一般Whole-web crawling对配置要求高(面对海量数据,抓取数据和存储空间都至关重要),花费时间长(几天甚至是几周),我们没有必要做这样的测试。所以我已抓取我们学校内部网页为例子,来做一个测试。
抓取前的准备工作
输入需要抓取的网站地址
在Nutch的安装目录中建立一个名为myurl的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页。
以我要抓取的网页为例,输入:
http://www.bupt.edu.cn/
注意:最后一个“/”不能少,否则和conf/crawl-urlfilter.txt中的内容不匹配,不能运行。
更改配置文件 crawl-urlfilter.txt
编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分,把它替换为你想要抓取的域名(地址),即把
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
修改为:
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)* bupt.edu.cn /
运行 crawl命令抓取网站内容
运行的命令
按3.1做好抓取前的准备,接着就可以使用crawl命令抓取网页。Crawl命令的可选参数如下:
·-dir dirnames 设置保存所抓取网页的目录.
·-depth depth 表明抓取网页的层次深度
·-delay delay 表明访问不同主机的延时,单位为“秒”
·-threads threads 表明需要启动的线程数
实际使用
改变当前工作区为nutch安装目录,运行以下命令行:
bin/nutch crawl myurl -dir mydir -depth 2 -threads 4 >&logs/logs1.log
在上述命令的参数中,myurl就是刚才我们创建的那个文件,存放我们要抓取的网址,dir指定抓取内容所存放的目录,depth表示以要抓取网站顶级网址为起点的爬行深度,threads指定并发的线程数。最后的logs/logs1.log表示把显示的内容保存在文件logs1.log中,以便分析程序的运行情况。
实际运行时间:5分钟。如果抓取成功的话,那么在目录mydir下有3个目录:
1. db
2. segments
3. index
查看抓取结果
1. 查看所抓取的网页数和链接数:
bin/nutch readbd mydir/db stats
mydir是刚才抓取网页时的保存文件夹。
显示结果:
Nuber of pages: 1240
Nuber of links: 2598
可能发生的错误:
1. 如果mydir在运行前已存在,则运行时将报错:mydir already exist。建议先删除这个目录,或者指定其他的目录存放抓取的网页。
四.在Tomcat中运行查看结果(在Windows下部署成功,但是在LInux下总是出错)
如果已经抓取成功,则可以在Tomcat上部署了,具体步骤如下:
1. 复制mydir/segments文件夹到../tomcat5/bin/下
2. 删除/Tomcat/webapps/ROOT文件夹。
3. 复制nutch-0.7.war到到../tomcat5/webapps/下,改名为ROOT.war并解开(不解开也可以,Tomcat运行时将自动解开)
4. 修改/webapps/nutch/WEB-INF/classes/nutch-site.xml :
将
<nutch-conf>
</nutch-conf>
换成
<nutch-conf>
<property>
<name>searcher.dir</name>
<value>Your_crawl_dir_path</value>
</property>
</nutch-conf>
Your_crawl_dir_path指刚才抓取网页时网页保存的文件夹,比如我的就是:D:\nutch\mydir
(所有的文章,帮助上都有这一点,但是经过我的实践证明,第4点可以省略)
5. 在\Tomcat\conf\Catalina\localhost下新建立一个xml文件,该文件名跟你nutch文件夹名一样.例如:我的nutch的文件夹名为nutch-0.7我就建立一个nutch-0.7.xml文件.用记事本打开它加入以下文字:
<Context path="my_nutch_path" debug="5" privileged="true" docBase="nutch-0.7"/>
其中my_nutch_path为nutch的安装目录,比如我的为:D:\nutch\nutch-0.7
(只要完成第一步,则第四,五步都可以省略)
6. 最后在浏览器中输入 http://localhost:8080 查看结果(远程查看需要将 localhost 换成相应的IP):
7. 输入查询关键字,查询结果:(比如输入“北邮”,按“搜索”按钮)
结果出现乱码。不过不要紧,这不是nutch的问题,而是Tomcat不能正常显示中文的问题,我们只需修改一下Tomcat的配置就行了:
打开tomcat\conf下的server.xml文件,将其中的Connector部分改成如下形式即可:(红色部分为添加的)
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
重新启动Tomcat,输入“北邮”,出现如下界面,运行成功。
五.其他说明
Nutch VS Lucene
Lucene不是完整的应用程序,而是一个用于实现全文检索的软件库。Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。
Nutch 是基于 Lucene的。Lucene为 Nutch 提供了文本索引和搜索的API。一个常见的问题是;我应该使用Lucene还是Nutch?最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。
Nutch 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。
分享到:
相关推荐
这个“Nutch使用&Nutch;入门教程”将带你深入理解Nutch的基本概念、工作流程以及如何实际操作它来执行网络爬取任务。 一、Nutch简介 Nutch是一个基于Java的开源搜索引擎,其主要功能包括网页抓取、链接分析、网页...
### Nutch 使用指南 #### 一、概述 Nutch 是一个开源项目,旨在帮助用户构建自己的内部网搜索引擎或面向整个互联网的搜索引擎。本指南将基于 Nutch 的版本 0.7,详细介绍如何设置和配置 Nutch 以进行内部网爬取...
nutch 使用文档 Nutch 是一个开源的网络爬虫工具,使用 Java 语言编写,主要用于爬取和索引互联网上的网页。下面是 Nutch 的使用方法和相关知识点。 Nutch 搭建过程 Nutch 的搭建过程主要包括准备工作、安装 ...
本文档将引导你入门Nutch的基本使用,包括环境配置、部署、爬取网页以及搜索功能的实现。 **环境要求:** 1. **JDK 1.5 或更高版本** - Nutch 需要Java开发环境支持,确保你的系统已经安装了Java,并且版本符合要求...
在实际操作中,开发者可能需要查看Nutch的源代码,特别是`org.apache.nutch.parse`包下的类,如`Parser`、`ParserFactory`等,来了解如何集成自定义的MP3解析功能。 总之,将MP3文件信息解析集成到Nutch中,可以...
《Nutch 入门教程.pdf》这本书籍或文档应该包含了 Nutch 的基础知识、安装配置、使用示例以及常见问题解答等内容。通过阅读此教程,你可以了解如何搭建 Nutch 爬虫环境,编写自定义插件,以及进行定制化抓取和索引。...
- **网页抓取**:Nutch使用爬虫技术,通过种子URL开始,遍历互联网上的链接,逐步抓取网页。 - **HTML解析**:抓取的网页会被解析成HTML文档,提取出有用的信息如标题、正文等。 - **链接分析**:Nutch使用...
由于Nutch使用了一些外部库,如MP3和RTF格式的解析库,你需要手动将这些库添加到项目的Classpath中。可以通过以下步骤实现: 1. 访问Nutch的源码库,找到相应的库文件: - MP3解析库:`...
### Nutch性能测试报告(单机模式)知识点详解 #### 一、测试概述与环境配置 **测试背景:** Nutch是一款开源的网络爬虫项目,它可以用来抓取互联网上的网页,并提供强大的搜索引擎功能。本报告针对Nutch在单机...
4. **Nutch版本**:在例子中使用的是Nutch 0.8版本,但你应该从Apache Nutch的官方网站下载最新的稳定版本,以获取最新的特性和修复。 5. **Tomcat**:Nutch可能需要与Tomcat集成,特别是如果你想使用Nutch的Web...
6. **存储**:Nutch使用HDFS(Hadoop分布式文件系统)存储抓取的数据和索引。 7. **检索**:通过Solr或Elasticsearch等搜索服务器提供查询服务。 三、Nutch配置与设置 学习Nutch,需要熟悉其配置文件,如`conf/...
**Nutch 使用总结** Nutch 是一个开源的网络爬虫项目,主要用来抓取互联网上的网页并建立索引,为信息检索提供基础。对于初学者来说,它是一个很好的平台,可以深入了解搜索引擎的工作原理并动手实践。 ### 1. ...
本文将详细介绍在Windows和Linux环境下如何搭建Nutch 1.7,并探讨如何将其与Solr集成使用。 **Nutch 在 Windows 下的搭建过程** 1. **准备工作** - 检查系统需求:确保你的Windows系统满足运行Java开发环境(JDK...
2. **分词(Tokenization)**:Nutch使用了Apache Lucene库进行文本分析,包括分词、停用词移除、词干化等预处理步骤,以准备数据供索引使用。 3. **索引(Indexing)**:索引模块将抓取的网页内容转化为可供搜索的...
《网络爬虫调研报告》 网络爬虫是互联网信息挖掘的重要工具,对于构建搜索引擎和提供检索服务至关重要。在本报告中,我们将深入探讨网络爬虫的背景、主要研究对象Nutch和Heritrix,以及爬虫的工作策略和流程。 ...
Nutch使用Hadoop进行分布式处理,通过MapReduce实现增量索引的计算任务。 3. **中文分词**:由于中文文本没有明显的空格分隔单词,因此中文分词是中文信息处理中的关键步骤。Nutch支持多种中文分词工具,如HanLP、...
Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包...
2. **URL管理**:Nutch 使用 URL 管理系统来跟踪已抓取的网页和待抓取的URL队列。URL通过种子列表开始,并根据链接关系进行扩展。 3. **网页抓取**:Nutch 使用 HTTP 协议抓取网页,支持多种编码格式,并且可以配置...
本文将详细介绍 Apache Nutch 1.7 在 Windows 和 Linux 下的安装过程,包括安装前的准备工作、安装 Cygwin、安装 Nutch 1.7、测试 Nutch 1.7 以及与 Solr 结合使用等内容。 1. 准备工作 在安装 Apache Nutch 1.7 ...