1. 安装jdk 略
2.安装eclipse略
3.Cygwin的下载 参考资料:http://hi.baidu.com/shirdrn/item/3961643c9e8d9bfc96f88da5
4.Cygwin安装地址不能有空格。
5.配置一下环境变量,环境变量的设置中一定要将JDK的安装根目录设置为JAVA_HOME,然后再设置CLASSPATH,PATH,即:%JAVA_HOME%/bin,%JAVA_HOME%/lib,千万不要设置为绝对目录,否则在执行Nutch命令时会出现错误,加入NUTCH_JAVA_HOME的变量,值跟JAVA_HOME的一样。
6.安装nutch0.9解压后目录为:d:\nutch-0.9
下载jid3lib-0.5.1.jar和rtf-parser.jar两个文件分别拷贝到src/plugin/parse-mp3/lib 和 src/plugin/parse-rtf/lib/。
7.打开Cygwin Terminal,cd d:/ 回车 cd nutch-0.9 回车 cd bin/nutch .如果 cd bin/nutch 出现错误,我是重新安装了一次Cygwin。
8.在D:\nutch-0.9下新建urls文件夹,在新建url.txt 写入http://www.aicent.net/
注意:必须有最后的/
9.在conf/crawl-urlfilter.txt 加入以下信息:利用正则表达式对网站url抓取筛选
# accept hosts in MY.DOMAIN.NAME
+^
# skip everything else
-.
10.nutch-site.xml 设置如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>test/unique</value>
</property>
</configuration>
11.执行bin/nutch crawl urls -dir sina -depth 3 -threads 1 -topN 100
开始抓取,抓取结束后会在d:\nutch-0.9下出现sina。
12.
将nutch目录的nutch-0.9.war复制到tomcat\webapps下,运行tomcat.生成nutch-0.9文件夹
.修改nutch-0.9/WEB-INF/classes/nutch-site.xml
<property>
<name>searcher.dir</name>
<value>D:\Cygwin\nutch-0.9\sina</value>
</property>
其中的"<value>D:\Cygwin\nutch-0.9\sina</value>"部分,应根据自己的设置进行相应修改,是nutch抓取结果存放目录。
启动Tomcat,打开浏览器在地址栏中输入:http://localhost:8080/nutch-0.9,即可看见nutch的搜索页面。
输入n即可看到搜索结果。
参考资料:http://www.cnblogs.com/streamhope/archive/2011/07/27/2118397.html
问题汇总:
Exception in thread "main" java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)
at org.apache.nutch.crawl.Injector.inject(Injector.java:162)
at org.apache.nutch.crawl.Crawl.main(Crawl.java:115)
情况一:说明:一般为crawl-urlfilters.txt中配置问题,比如过滤条件应为
+^http://www.ihooyo.com ,而配置成了 http://www.ihooyo.com 这样的情况就引起如上错误。
情况二:执行set JAVA_OPTS= -Xms32m -Xmx512m
2:http://127.0.0.1:8080/nutch-0.9
输入n进行查询,结果报错:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: /search.jsp(151,22) Attribute value language + "/include/header.html" is quoted with " which must be escaped when used within the value
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198)
org.apache.jasper.compiler.Parser.parseQuoted(Parser.java:299)
org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:249)
org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:211)
org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:154)
org.apache.jasper.compiler.Parser.parseInclude(Parser.java:867)
org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1134)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1461)
org.apache.jasper.compiler.Parser.parse(Parser.java:137)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
分析:查看nutch Web应用根目录下的search.jsp可知,是引号匹配的问题。
<jsp:include page="<%= language + "/include/header.html"%>"/> //line 152 search.jsp
第一个引号和后面第一个出现的引号进行匹配,而不是和这一行最后一个引号进行匹配,所以问题就出现了。
解决方法:
替换成
<jsp:include page="<%= language + \"/include/header.html\"%>"/>
修改完成后,为确保修改成功,重启一下Tomcat服务器,进行搜索,不再报错。
导入到Eclipse中
①在Eclipse中添加File > New > Project > Java project。
project name随便,选择 “Create project from existing source” ,在browse中选nutch的解压路径,如D:\nutch-1.2
②在“Add Class Folder” 中选择 conf 文件夹。
③然后再定义一个“Default ouput folder” ,名称任意。注意不能选bin文件夹,因为如果选了bin文件夹做为Default output folder 编译时会清空该文件夹,bin下的其他文件会被删掉,导致其他问题。
④Finish.
3.修改Nutch的配置文件,这里以抓取www.163.com为例。
①修改D:\nutch-1.2\conf下的nutch-site.xml配置
<?xml version="1.0"?> <?xml-stylesheet href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>http.agent.name</name> <value>nutch-1.2</value> <description>HTTP 'User-Agent'</description> </property> <property> <name>searcher.dir</name> <value>D:\nutch-1.2\crawl</value> <description>Path to root of crawl.</description> </property> </configuration>
②修改在D:\nutch-1.2\conf下的crawl-urlfilter.txt
# accept hosts in MY.DOMAIN.NAME +^http://([a-z0-9]*\.)*163.com/ # skip everything else
③修改D:\nutch-1.2\conf下的nutch-default.xml
<property> <name>plugin.folders</name> <value>./src/plugin</value> <description>Directories where nutch plugins are located. Each element may be a relative or absolute path. If absolute, it is used as is. If relative, it is searched for on the classpath.</description> </property>
④在D:\nutch-1.2\下,建立名为urls的文件夹,并在文件夹内建立url.txt的文本,写入
http://www.163.com/
选择window->show View ->add buildfiles-> buildfile selection 选择build.xml 点击OK 双击项目名,开始编译,经过打包,生成war发布包,把新成的war 文件复制tomcat/webapps下,重启to mcat,打开浏览器,访问地址,可以看到Nutch的检索页面。