http://wiki.apache.org/nutch/NutchTutorial
Apache Nutch是一个Java实现的开源的web爬虫,通过它我们可以自动搜集网页链接,减少大量的维护工作,例如检测坏链接。对抓取过的网页创建一个拷贝(Apache Solr的工作)Solr是一个开源全文索引搜索框架,通过solr,可以搜索nutch抓取的网页。nutch和solr的结合也是很简单直观
安装
下载解压apache-nutch-1.X-bin.zip
运行bin/nutch看到Usage: nutch COMMAND
bin/nutch crawl urls -dir crawl -depth 3 -topN 5 -dir 存放crawl的文件夹 -threads 并发抓取网页的线程数目 -depth 从root page链接深度 -topN 每一层抓取的网页数目
简单的操作过程
bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5
将抓取下来的网页生成索引
Nutch数据由下面几个数据组成
1,crawldb,存放所有nutch需要抓取和已经抓取的url
2,link数据库,存放已知的urls之间的链接关系
3,一组segment,每个segment由一组urls组成,包含以下子文件夹
a,crawl_generate 需要抓取的urls
b,crawl_fetch 包含正在抓取url的状态
c,content 包含每个url获取到的文本流信息
d,parse_text 包含每个url解析过的文本
e,parse_data 包含解析到的outlinks以及metadata信息
f,crawl_parse 包含outlink URLS,用于更新crawldb
拆分为下面几个步骤
A,抓取网页
1,seeding the crawldb with a list of URLS
a,从DMOZ数据库中获取 (见手册)
b,从一个初始seed list获取 bin/nutch inject crawl/crawldb urls
编辑conf/nutch-site.xml
<configuration> <property> <name>http.agent.name</name> <value>My Nutch Spider</value> </property> </configuration>
mkdir -p urls cd urls touch seed.txt vi seed.txt (ie: http://nutch.apache.org/)
2,fetching
从crawl/crawldb中创建需要抓取的list
bin/nutch generate crawl/crawldb crawl/segments
(生成一个以创建时间为名称的文件夹)
s1=`ls -d crawl/segments/2* | tail -1` echo $s1 // "crawl/segments/20130105111821" bin/nutch fetch $s1 bin/nutch parse $s1
然后用抓到的数据更新crawldb
bin/nutch updatedb crawl/crawldb $1
这时crawldb就包含了初始设定的url和后来发现的一些url
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
这样,就抓去了1000个网页,然后来索引它们
3,invertlinks(反转链接)
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
B,搭建solr用于搜索
下载apache-solr-3.x.x.zip解压
cd example
java -jar start.jar
检查下面两个链接能否打开
http://localhost:8983/solr/admin/
http://localhost:8983/solr/admin/stats.jsp
C,结合solr和nutch
cp apache-nutch-1.6/conf/schema.xml apache-solr-3.6.0/example/solr/conf/
java -jar start.jar //索引 bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/*
然后可以访问上面的两个网页进行搜索了