在使用本教程之前,需要满足条件:
1)有一台Linux或Linux虚拟机
2)安装JDK(推荐1.7)
3)安装Apache Ant
下载Nutch源码:
安装IDE:
推荐使用Intellij或者Netbeans,如果用eclipse也可以,不推荐。
Intellij官方下载地址:http://www.jetbrains.com/idea/download/
转换:
Nutch源码是用ant进行构建的,需要转换成eclipse工程才可以导入IDE正确使用,Intellij和Netbeans都可以支持ecilpse工程。
解压下载的apache-nutch-1.9-src.zip,得到文件夹apache-nutch-1.9。
在执行转换之前,我们先修改一下ivy中的一个源,将它改为开源中国的镜像,否则转换的过程会非常缓慢。(ant源码中并没有附带依赖jar包,ivy负责从网上自动下载jar包)。
修改apache-nutch-1.9文件夹中的ivy/ivysettings.xml:
找到:
将value修改为http://maven.oschina.net/content/groups/public/ ,修改后:
保存并退出,保证当前目录为apache-nutch-1.9,执行命令:
ant eclipse-verbose
然后耐心等待,这个过程ant会根据ivy从中心仓库下载各种依赖jar包,可能要十几分钟。
-verbose参数加上之后可以看到ant过程的详细信息。
10分钟左右,转换成功:
打开Intellij, File -> Import Project ->选择apache-nutch-1.9文件夹,确定后选择Import project from external model(Eclipse)
一直点击next到结束。成功将项目导入Intellij:
源码导入工程后,并不能执行完整的爬取。Nutch将爬取的流程切分成很多阶段,每个阶段分别封装在一个类的main函数中。在外面通过Linux Shell调用这些main函数,来完整爬取的流程。我们在后续教程中会对流程调度做一个详细的说明。
下面我们来运行Nutch中最简单的流程:Inject。我们知道爬虫在初始阶段,是需要人工给出一个或多个url,作为起始点(广度遍历树的树根)。Inject的作用,就是把用户写在文件里的种子(一行一个url,是TextInputFormat),插入到爬虫的URL管理文件(crawldb,是SequenceFile)中。
从src文件夹中找到org.apache.nutch.crawl.Injector类: