nutch爬虫是基于lucene搜索的,是apache的一个开源项目,由于我个人计划完善一个开源的爬虫
并实施部署上线,就今天下载并研究了下
下面是配置相关的步骤
环境:tomcat7 64位8C8G的linux服务器
PS:为了防止中文搜索乱码
修改tomcat的配置文件
vi /usr/alibaba/tomcat7/conf/server.xml
找到http协议的connector并增加URIEncoding="UTF-8" useBodyEncodingForURI="true"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
nutch安装省略
1. 新增dmoz目录并将相关公网的url放入urls文件下面
http://www.163.com/
http://www.sina.com/
http://www.sohu.com/
http://www.qq.com/
http://www.tom.com/
http://china.alibaba.com/
2. “注射”网址到crawldb数据库
sh bin/nutch inject crawl/crawldb dmoz
3. 编辑conf/nutch-site.xml文件,增加代理的属性
vi /usr/alibaba/tomcat7/webapps/nutch/WEB-INF/classes/nutch-site.xml
插入
<configuration>
<property>
<name>searcher.dir</name>
<value>/home/bing/nutch/crawl</value>
</property>
</configuration>
4. 从数据库crawldb中创建抓取列表
sh bin/nutch generate crawl/crawldb crawl/segments
tree crawl/segments
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1
5. 运行 fetcher,获取这些 URL 信息
sh bin/nutch fetch $s1
6. 更新数据库,把获取到的页面信息存入数据库中
sh bin/nutch updatedb crawl/crawldb $s1
7. 选择分值排在前10的URL(一个很小的子集)来进行第二次和第三次抓取
sh bin/nutch generate crawl/crawldb crawl/segments -topN 10
8. 第二次抓取
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2
sh bin/nutch fetch $s2
sh bin/nutch updatedb crawl/crawldb $s2
9. sh bin/nutch generate crawl/crawldb crawl/segments -topN 10
10. 第三次抓取
s3=`ls -d crawl/segments/2* | tail -1`
echo $s3
sh bin/nutch fetch $s3
sh bin/nutch updatedb crawl/crawldb $s3
11. 根据sengments的内容更新linkdb数据库
sh bin/nutch invertlinks crawl/linkdb crawl/segments/*
12. 建立索引
sh bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/*
indexes:用于存放索引
crawldb,linkdb,segments:索引数据库源
在命令环境下面测试搜索
test="alibaba";sh bin/nutch org.apache.nutch.searcher.NutchBean $test
效果如下:
![](http://hi.csdn.net/attachment/201012/8/0_1291794498Z533.gif)
![](http://hi.csdn.net/attachment/201012/8/0_1291794554fjDm.gif)