1,apache nutch
官方说明:
Apache的Nutch是一个开源Java编写的网络爬虫。通过它,我们可以自动的抓取网络上的链接,减少大量的维护工作,比如:检查环链,死链,并且把抓取到的网页存到硬盘上,这也是引入Apache Solr的原因。Solr是一个开源的全文搜索框架,在Solr中,我们可以搜索Nutch抓取下来的网页。幸运的是, Nutch和Solr中之间的整合是非常简单的。
百度百科:
Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。
尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然不利于广大Internet用户.
Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nucth没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果。
Nutch必须能够做到:
Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch必须能够做到:
* 每个月取几十亿网页
* 为这些网页维护一个索引
* 对索引文件进行每秒上千次的搜索
* 提供高质量的搜索结果
* 以最小的成本运作
2,nutch相关技术
从 nutch0.8.0开始,Nutch 完全构建在 Hadoop 分布式计算平台之上。Hadoop 除了是一个分布式文件系统外,还实现了 Google 的 GFS 和 MapReduce 算法。因此基于 Hadoop 的 Nutch 搜索引擎可以部署在由成千上万计算机组成的大型集群上。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。nutch抓取的内容通过Lucene建立索引,然后通过solr提供搜索服务。
3,nutch的工作流程1. 创建一个新的WebDb (admin db -create).
2. 将抓取起始URLs写入WebDB中 (inject).
3. 根据WebDB生成fetchlist并写入相应的segment(generate).
4. 根据fetchlist中的URL抓取网页 (fetch).
5. 根据抓取网页更新WebDb (updatedb).
6. 循环进行3-5步直至预先设定的抓取深度。
7. 根据WebDB得到的网页评分和links更新segments (updatesegs).
8. 对所抓取的网页进行索引(index).
9. 在索引中丢弃有重复内容的网页和重复的URLs (dedup).
10. 将segments中的索引进行合并生成用于检索的最终index(merge).
4,部署运行nutch
1,下载nutch 的二进制包http://www.apache.org/dyn/closer.cgi/nutch/
apache-nutch-1.7-bin.tar.gz
2,配置java环境
#set nutch environment
export NUTCH_HOME=/home/hadoop/nutch
export CLASSPATH=$NUTCH_HOME/lib:$CLASSPATH
export PATH=$NUTCH_HOME/bin:$PATH
配置完,执行source /etc/profile 立即生效
3,运行nutch
假如提示错误,有可能是权限问题:这样解决chmod +x bin/nutch,
也有可能是java环境问题
4.如下修改conf/nutch-site.xml文件
<property> <name>http.agent.name</name> <value>My Nutch Spider</value> </property>
5.新建文件夹urls,(/home/hadoop),在urls中新建url.txt文件,写上你开始抓取的网址url,例如:
http://nutch.apache.org/
6.编辑文件conf/regex-urlfilter.txt
修改过滤器,文件里有简要的修改说明
这里可以把+.这一行替换为
+^http://([a-z0-9]*\.)*nutch.apache.org/
行首的+号表示匹配后面跟的正则表达式,则加入的抓取列表;行首为-号表示匹配后面跟的正则,就不抓取。
7.现在执行 bin/nutch crawl urls -dir crawl -depth 3 -topN 5
第一个参数carwl:执行crawl命令抓取
第二个参数urls :首次注入crawlDB的url文件所在目录
第三个参数-dir crawl:生成的crawlDB放在carwl文件夹里
第四个参数-depth 3:抓取深度为3
第五个参数-topN 5:抓取前五个url
执行完之后多了这几个文件夹crawl/crawldb ,crawl/linkdb ,crawl/segments
8.使用solr为刚刚抓取的结果简历索引,并提供搜索服务
下载solr:http://www.apache.org/dyn/closer.cgi/lucene/solr/
下载的时候千万注意要下载最新版,最新的在最下面
解压,进入example目录,执行java -jar start.jar
访问http://localhost:8983/solr/admin/ 或者 http://localhost:8983/solr/admin/stats.jsp 检查solr是否安装正确
把nutch运行目录下的/conf/schema.xml文件拷贝到solr中/example/solr/conf/里面
重启solr
运行:
nutch solrindex http://localhost:8983/solr/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/*
这样就可以在http://localhost:8983/solr/admin/ 页面对刚刚抓取的内容进行搜索了
9.如果一开始就安装好solr,在solr启动的情况下,第七步执行这个命令就能直接建立索引
nutch solrindex http://localhost:8983/solr/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/*