实在是看不下去Nutch官方的坑爹教程了,总结一套看完能懂的Nutch教程,持续更新中。
开发环境和基础:
学习Nutch,必须满足以下几个条件,缺一不可:
1)Linux环境,实在是没办法就在Windows上装Linux虚拟机。
2)熟悉JAVA。
3)有hadoop基础,能够编写hadoop下map reduce程序。
4)能够看懂Linux Shell。
下面来解释以下为什么需要满足这些条件。Nutch是在hadoop上运行的,windows下跑hadoop有一定的问题。并且Nutch中流程的控制使用的是Linux Shell,在windows上实现也比较麻烦。如果看不懂Linux Shell,就看不懂Nutch的流程。Nutch被切分成几个流程,每个流程都由Map Reduce完成,如果没有Map Reduce编程的基础,就看不懂Nutch源码。
源码阅读:
千万不要拿Nutch源码作为爬虫入门的教程。在学习Nutch之前最好先找一个单机爬虫熟悉爬虫的流程和基础。如果连Http请求、网页信息抽取这些最基础的技术细节都搞不清楚,阅读Nutch源码是没有用的,虽然说Nutch的http请求、网页解析是通过插件来完成的,但是我可以告诉你,如果你对Nutch的工作流程不是非常了解,是写不了Nutch插件的,哪怕是最简单的插件,所以不要想通过阅读Nutch插件的方法,来学习怎么发送http请求这种基础。更重要的是,在阅读Nutch源码之前,一定要了解爬虫的流程。Nutch中每个流程的输入输出都存放在hadoop文件中,文件是SequenceFIle,直接无法正确阅读文件的内容,如果想通过观察SequenceFile来了解爬虫的流程,是比较困难的。JAVA开源的单机爬虫有很多种,和Nutch流程最相似的是WebCollector。WebCollector和Nutch一样,都是将完整广度遍历切分成一层一层的爬取(每一层对应树的一层),有相同的链接存储、更新机制,采用相同的线程池,可以通过阅读WebCollector的源码来作为学习Nutch的基础。