转载请注明出处:http://blog.csdn.net/ZDK_csdn/article/details/71224011
nutch下载地址(所有版本):http://archive.apache.org/dist/nutch/
Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
Nutch 由爬虫crawler和查询searcher两部分组成。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的耦合度很低。Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
Nutch 1.3版本之前含有自己的索引war包。Nutch 1.3版本之后集成了Solr(一个开源的全文索引框架),索引部分由Solr来做。消除了过去依赖于Apache Tomcat来运行老的Nutch网络应用以及依赖于Apache Lucene来进行索引的麻烦。
1.准备
操作系统:Windows 10 企业版
JDK版本:jdk-1.7.0
Nutch版本:nutch-0.9.tar.gz
Tomcat版本:apache-tomcat-7.0.68
Cygwin版本:2.8.0-1
Cygwin是一个在windows平台上运行的类UNIX模拟环境。
详细安装教程:http://download.csdn.net/detail/zdk_csdn/9833647
查看cygwin当前的版本:cygcheck -c cygwin
2.将下载的nutch-0.9复制到cygwin的home目录下双击打开cygwin图标,进入一个命令窗口,进入nutch-0.9的bin目录,输入./nutch会出来很多nutch支持的命令。
3.修改nutch-0.9/conf/nutch-site.xml
(这个文件会覆盖nutch-default.xml中的内容)
<configuration>
<property>
<name>http.agent.namename>
<value>zdk_nutchvalue>
<description>description>
property>
<property>
<name>http.agent.descriptionname>
<value>value>
<description>description>
property>
<property>
<name>http.agent.urlname>
<value>value>
<description>description>
property>
<property>
<name>http.agent.emailname>
<value>value>
<description>description>
property>
configuration>
填写相关的代理属性(http.agent.name属性值必须填写)。nutch遵守了 robots协议,在获取 response时,把自己的相关信息提交给被爬行的网站,以供识别。
4.在nutch-1.2/bin/下建立文件夹urls,然后在urls下面建立文件url.txt
里面内容是http://www.163.com/
注:要抓取的网站。可以写多个,注意换行。
4.修改nutch-0.9/conf/crawl-urlfilter.txt
# accept hosts in MY.DOMAIN.NAME
+^http://www.163.com/
这里对过滤文件中的配置加以说明:
配置文件中以“#”开头的行为注释,以“-" 开头的表示符合正则表达式就过滤掉,以“+”开头的表示符合正则表达式则保留。正则表达式中"^"表示字符串的开头,"$"表示字符串的结尾,"[]"表示集合。
# skip file: ftp: and mailto: urls
#过滤掉file:ftp等不是html协议的链接
-^(file|ftp|mailto):
# skip image and other suffixes we can't yet parse
#过滤掉图片等格式的链接
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$
# skip URLs containing certain characters as probable queries, etc.
#-[?*!@=] 过滤掉含特殊字符的链接,因为要爬取更多的链接,所以修改过滤条件,使包含?!=的链接不被过滤掉
-[*@]
# skip URLs with slash-delimited segment that repeats 3+ times, to break loops
#过滤掉一些特殊格式的链接
-.*(/[^/]+)/[^/]+\1/[^/]+\1/
# accept anything else
#接受所有的链接,这里可以做自己的修改,是的只接受自己规定类型的链接
6.执行./nutch crawl urls -dir crawl -depth 5 -threads 4 -topN 50
7.把nutch-0.9文件夹下的nutch-0.9.war拷到tomcat的webapps文件下。打开tomcat,nutch-0.9.war会自动被解压成同名的nutch-0.9文件夹。然后修改nutch-0.9/WEB-INF/classes下的nutch-site.xml文件。
8.配置nutch-0.9/WEB-INF/classes/nutch-site.xml
修改后如下
<configuration>
<property>
<name>searcher.dirname>
<value>C:/cygwin/nutch-0.9/bin/crawlvalue>
property>
configuration>
注:C:/cygwin/nutch-0.9/bin/crawl这个路径就是你之前抓取数据的存放路径。
9.中文乱码问题
配置tomcat的conf文件夹下的server.xml
修改如下
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
注:URIEncoding=”UTF-8” useBodyEncodingForURI=”true”
错误描述:
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
分析:查看nutch Web应用根目录下的search.jsp可知,是引号匹配的问题。(其他一些界面也有这个问题,遇到问题时具体解决吧,tomcat5.5.28及以上版本都会有此问题)
解决:
<jsp:include page='<%= language + "/include/header.html"%>'/>
OK了,启动tomcat打开浏览器,输入http://localhost:8080/nutch-0.9/
转载请注明出处:http://blog.csdn.net/ZDK_csdn/article/details/71224011
福利:
nutch0.9分页处理代码:http://download.csdn.net/detail/zdk_csdn/9836276
有需要可以下载。