下载nutch-0.8.1.tar.gz ,解压缩到e:\nutch-0.8.1
1. 在e:\nutch-0.8.1目录下建一个名为urls的目录,在里面建一个url.txt文件,名字任意,内容为你要爬行的网站如:http://www.sina.com.cn或者 http://133.40.188.130:8880/klms
2. 修改nutch\conf\crawl-urlfilter.txt文件,把MY.DOMAIN.NAME字符替换为url.txt内的url的域名,如:+^http://([a-z0-9]*\.)*133.40.188.130:8880/
+^http://([a-z0-9]*\.)*sina.com.cn/
3. 修改conf\nutch-site.xml文件,如果是sina.com.cn 则value 的值修改为:http://www.sina.com.cn
<property>
<name>http.robots.agents</name>
<value>http://133.40.188.130:8880/klms</value>
</property>
<property>
<name>http.agent.name</name>
<value>http://133.40.188.130:8880/klms</value>
</property>
<property>
<name>http.agent.url</name>
<value>http://133.40.188.130:8880/klms</value>
</property>
4. 修改nutch\conf\nutch-default.xml
打开conf\nutch-default.xml 文件,找到<name>http.agent.name</name> ,然后把Value值随便设计一个。
<name>http.agent.name</name>
<value>sina</value>
如果http.agent.name为空时,在爬行的时候可能出现空指针异常,所以务必加上
以上配置,是爬取intranet的配置方式。
5. 执行nutch
打开cygwin,cd /cygdrive/e/nutch-0.8.1
执行命令:bin/nutch crawl urls -dir crawl -depth 3 -topN 50
参数含义:
crawl:通知nutch.jar,执行crawl的main方法。
urls:存放需要爬行的url.txt文件的目录,注意,这个名字需要和你的文件夹目录相同,如果你的文件夹为search,那这里也应该改成search。
-dir crawl:爬行后文件保存的位置,可以在nutch/bin目录下找到。
-depth 3:爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1。
-topN 50:一个网站保存的最大页面数。
具体的爬行日志可以在nutch-0.8.1/logs目录下看到,爬行后会在nutch-0.8.1/下自动生成一个文件crawl
6. 查询搜索:
nutch提供了类似google、baidu的网页页面,在nutch压缩包下找到nutch-0.8.war文件,放到tomcat/webapps目录下,修改webapps/nutch/WEB-INF/classes/nutch-site.xml文件内容如下:
<property>
<name>searcher.dir</name>
<value>E:\ nutch-0.8.1\crawl</value>
</property>
value的内容是刚才爬行后的crawl目录位置,提供给客户端来查询
配置完成后,启动tomcat,输入http://localhost:8080/nutch,输入关键字sina,就会看到结果了。
Nutch 爬行方式
Nutch 的爬虫有两种方式:
1、爬行企业内部网
1、爬行企业内部网(Intranet crawling)。针对少数网站进行。用 crawl 命令。
2、爬行整个互联网
2.1、爬行整个互联网。 使用低层的 inject, generate, fetch 和 updatedb 命令。具有更强的可控制性。
2.1.1、全网爬行
全网爬行设计去处理非常大量的爬行,它可能要花几个星期的时间才能完成,并起需要多台电脑来运行它。
2.1.2 下载 http://rdf.dmoz.org/rdf/content.rdf.u8.gz 然后解压 解压命令为: gunzip content.rdf.u8.gz
2.1.3 创建目录 mkdir dmoz
2.1.4 每搜索5000条URL记录选择一个存进urls文件: bin/nutch org.apache.nutch.tools. DmozParser content.rdf.u8 -subset 5000 > dmoz/urls
4.4 初始化crawldb: bin/nutch inject crawl/crawldb dmoz
4.5 从crawldb生成fetchlist: bin/nutch generate crawl/crawldb crawl/segments
4.6 fetchlist放置在重新创造的段目录,段目录根据指定的时间创建,我们保存这段变量s1:
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1 显示结果如:crawl/segments/2006******* /*号部分表示是月日时的数字,如20060703150028
4.7 运行这段: bin/nutch fetch $s1
4.8 完成后更新数据结果: bin/nutch updatedb crawl/crawldb $s1
4.9现在数据库的参考页设在最初,接着来取得新的1000页:
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2
bin/nutch fetch $s2
bin/nutch updatedb crawl/crawldb $s2
4.10 让我们取得周围的更多:
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s3=`ls -d crawl/segments/2* | tail -1`
echo $s3
bin/nutch fetch $s3
bin/nutch updatedb crawl/crawldb $s3
4.11 创建索引:
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
4.12 使用索引命令: bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/*
附件:cygwin安装图解