首先安装jdk和tomcat,见前面两篇博文。
下 载
apache的官方网站 http://www.apache.org/dyn/closer.cgi/lucene/nutch/或http://www.apache.org/dyn/closer.cgi/nutch
最新版本是apache-nutch-1.2-bin.tar.gz
安 装
解压缩到某个目录下即可,如/home/username/nutch
准备工作
(1) 在nutch-1.2目录下新建一个文件weburls.txt,写入初始网址,如http://www.csdn.net/.
(2) 打开nutch-1.2/conf/crawl-urlfilter.xml,删除原来内容,加入:
+^http://([a-z0-9]*/.)*csdn.net/ //允许访问csdn网站的网页
若想默认访问多个网站,将上述语句改为:+^
注:必须删去MY.DOMAIN.NAME。
(3) 打开nutch-1.2/conf/nutch-site.xml,加入黑体字部分:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>http.agent.name</name>
<value>HD nutch agent</value>
</property>
<property>
<name>http.agent.version</name>
<value>1.0</value>
</property>
</configuration>
否则,报错:
Fetcher: No agents listed in 'http.agent.name' property.
Exception in thread "main" java.lang.IllegalArgumentException: Fetcher: No agents listed in 'http.agent.name' property
抓取网页
bin/nutch crawl weburls.txt -dir localweb -depth 2 -topN 100 -threads 2
其中: -dir = localweb 指明下载数据存放路径,该目录不存在时,会被自动创建
-deptch = 2 下载深度为2
-topN = 100 下载符合条件的前100个页面
-threads = 2 启动的线程数目
爬虫运行时会输出大量数据,抓取结束之后,可以发现localweb目录被生成,里面有几个目录。
在tomcat中配置nutch
(1) 设置nutch-1.2的权限,打开tomcat6/conf/catalina.policy,加入:
grant {
permission java.security.AllPermission;};
否则,报错:Exception sending context initialized event to listener instance of class org.apache.nutch.searcher.NutchBean$NutchBeanConstructor
java.lang.RuntimeException: java.security.AccessControlException: access denied
(2) 手动启动tomcat:cd /home/username/tomcat/tomcat6; bin/startup.sh
(3) 将nutch-1.2中的nutch-1.2.war复制到tomcat6/webapps/中,tomcat在运行状态下会自动解压缩这个包,打开解压缩后的包,在文件/nutch-1.2/WEB-INF/nutch-site.xml中加入:
<property>
<name>searcher.dir</name>
<value>/home/username/nutch-1.2/localweb</value>
<description></description>
</property>
这个value值为所爬取到的数据的存储路径,搜索引擎根据这个路径搜索到用户想要的内容。
在web上运行nutch搜索
地址栏输入:http://localhost:8080/nutch-1.2
在出现的搜索界面中填写搜索关键词,即可获得结果。(若结果出现乱码,请参考上篇博文对tomcat进行相应配置)
查看nutch搜索结果
(1)使用readdb工具可以解析网页库,查看网页和链接数量等信息。
简单查看信息:
$bin/nutch readdb localweb/crawldb -stats (其中stats指明统计库内信息)
调用 -dump参数,导出每个url的信息到pageurl目录下的文本文件:
$bin/nutch readdb localweb -dump pageurl
调用 -topN参数,显示url权重排序信息到urlpath目录下的文本文件:
$bin/nutch readdb localweb/crawldb -topN 3 urlpath
(2) 调用segread,可以读取已经下载的所有分段的信息
简单查看:
$bin/nutch segread -list -dir localweb/segments/
获取更多详细信息,使用shell命令:
s='ls -d crawl-tinysite/segments/* | head -l'
bin/nutch readseg -dump $s