1. nutch简介
1.1什么是nutch
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
1.2研究nutch的原因
可能有的朋友会有疑问,我们有google,有百度,为何还需要建立自己的搜索引擎呢?这里我列出3点原因:
(1) 透明度:nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。
(2) 对搜索引擎的理解:我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。
(3) 扩展性:你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。
1.3 nutch的目标
nutch致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, nutch必须能够做到:
• 每个月取几十亿网页
• 为这些网页维护一个索引
• 对索引文件进行每秒上千次的搜索
• 提供高质量的搜索结果
• 以最小的成本运作
这将是一个巨大的挑战。
2. nutch的安装与配置
2.1、环境:
1).操作系统:windowsXp
2).java1.6,设置JAVA_HOME到环境变量
3).cygwin,当然这个不是必需的,只是nutch提供的脚本只能在shell环境下使用,所以使用cygwin来虚拟shell命令。
4).nutch版本:1.0
5).tomcat:6.0
2.2、cygwin的安装:
cygwin的安装此处不再介绍安装步骤,只介绍安装后需要如何判断是否能够使用:在cygwin的安装目录下,查找x:/cygwin/cygwin/bin/sh.exe,存在此命令即可使用。
cygwin在删除后会发现无法再次成功安装的问题,可以通过注册表内的查找功能,删除所有包含cygwin内容的键值即可。
在桌面我的电脑设置环境变量 NUTCH_JAVA_HOME=“C:/Program Files/Java/jdk1.6.0_10”(我本机的jdk路径);
2.3、nutch的安装和配置:
1),安装cygwin(我这里装到D:/cygwin),将nutch解压缩后放置到cygwin/home/用户名的一个目录下(我放在D:/cygwin/home/Administrator下),如图:
2),在Cygwin环境下进入nutch-1.0目录下,使用命令 bin/nutch进行测试,正常的情况下出现的结果是:
3),进行抓取网站的测试,以抓取http://www.163.com/为例
1.3.1 新建一个文件myurl,在文件中输入http://www.163.com/保存,这个文件可以放在任何地方(我这个文件放在D:/cygwin/home/Administrator/nutch-1.0/URLS),另外再建立一个爬虫日志目录logs(我放在D:/cygwin/home/Administrator/nutch-1.0/LOGS)
1.3.2打开nutch-1.0/conf/nutch-site.xml文件,在内插入以下内容:
可以把XXX之间的内容替换为其他字符,当然就算是不替换也无所谓,这里的设置,是因为nutch遵守了robots协议,在获取response时,把自己的相关信息提交给被爬行的网站,以供识别。
1.3.3 打开nutch-1.0/conf/crawl-urlfilter.txt文件,把MY.DOMAIN.NAME字符替换为myurl内的域名(比如我改成了“+^http://([a-z0-9]*/.)*163.com/”,其实更简单点,直接删除MY.DOMAIN.NAME这几个字就可以了,也就是说,只保存+^http://([a-z0-9]*/.)*这几个字就可以了,表示所有http的网站都同意爬行)。
1.3.4 运行爬虫,在Cygwin输入以下命令:
bin/nutch crawl urls -dir sunleap -depth 2 -threads 4 -topN 1000 >&LOGS/log1.log
这里-dir表示存储的目录,-depth表示网址爬的深度,最后是指明日志文件
运行结束后,你可以打开日志文件查看爬虫运行的详细过程。
1.3.5 在tomcat上运行Nutch
把nutch-1.0.war拷贝到Tomcat//webapps/下面
在浏览器中输入http://localhost:8080/nutch-0.9/这步是为了使tomcat展开nutch-1.0.war,然后修改webapps/ nutch-1.0/WEB-INF/classes/nutch-site.xml文件如下:
为了支持中文的搜索,修改Tomcat/conf/server.xml。找到对应的地方修改成
connectionTimeout=”20000″
redirectPort=”8443″ URIEncoding=”UTF-8″ useBodyEncodingForURI=”true”/>
启动tomcat 访问、搜索