阿布云

你所需要的,不仅仅是一个好用的代理。

爬虫的分类

阿布云 发表于

527.png

开发网络爬虫应该选择Nutch、Crawler4j、WebMagic、scrapy、WebCollector还是其他的?上面说的爬虫,基本可以分3类:1.分布式爬虫:Nutch;2.JAVA爬虫:Crawler4j、WebMagic、WebCollector;3.非JAVA爬虫:scrapy(基于Python语言开发)
爬虫使用分布式,主要是解决两个问题:1.海量URL管理;2.网速。
现在比较流行的分布式爬虫,就是Apache的Nutch。但是对于大多数用户来说,Nutch可能是这几类爬虫里,最不好的选择,这是为什么呢?1.Nutch是为搜索引擎设计的爬虫,而大多数用户是需要做精准数据爬取的爬虫。Nutch运行的一套流程里,其中有三分之二是为了搜索引擎而设计的。对精确抽取没有太大的意义。也就是说,用Nutch做数据抽取的话,就会浪费很多的时间在不需要的计算上面。并且如果你试图通过对Nutch进行二次开发,让它适用于精确抽取的业务上的话,基本上就会破坏Nutch的基本框架,把Nutch改的面目全非,如果有修改Nutch的能力,还不如自己写个爬虫框架了。2.Nutch依赖于hadoop运行,hadoop本身会消耗很多的时间。3.Nutch虽然有一套插件机制,而且作为亮点宣传,可以看到一些开源的Nutch插件,提供精确抽取的功能。但是开发过Nutch插件的人都知道,Nutch的插件系统有多蹩脚。利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精确抽取系统了。而且Nutch并没有为精抽取提供相应的插件挂载点。Nutch的插件有只有五六个挂载点,而这五六个挂载点都是为了搜索引擎服务的,并没有为精抽取提供挂载点。4.很多人说Nutch2有gora,可以持久化数据到avro文件、hbase、mysql等。很多人其实理解错了,这里说的持久化数据,是指将URL信息(URL管理所需要的数据)存放到avro、hbase、mysql。并不是你要抽取的结构化数据。其实对大多数人来说,URL信息存在哪里无所谓。
所以,如果你不是要做搜索引擎,尽量不要选择Nutch作为爬虫。有些团队就喜欢跟风,非要选择Nutch来开发精抽取的爬虫,其实是冲着Nutch的名气,当然最后的结果往往是项目延期完成。如果你是要做搜索引擎,Nutch1.x是一个非常好的选择。Nutch1.x和solr或者es配合,就可以构成一套非常强大的搜索引擎了。