2009-08-20 70 views
2

我有一个比较简单的例子。我基本上想要存储有关各个网站之间链接的数据,并且不想限制这些域。我知道我可以使用一些http客户端库编写我自己的抓取工具,但是我觉得我会做一些不必要的工作 - 确保页面不被检查多次,计算出如何读取和使用robots.txt文件,甚至可能试图使其并发和分发,我相信还有很多其他的东西我还没有想到。因此我想要一个抓取这些事情的网络抓取框架,同时允许我指定如何处理这些响应(在我的情况下,只是提取链接并存储它们)。大多数抓取工具似乎认为您正在为搜索索引网页,这并不好,我需要一些可定制的功能。可扩展/可定制的Web爬网引擎/框架/库?

我想将链接信息存储在MongoDB数据库中,所以我需要能够指定链接如何存储在框架中。虽然我将这个问题标记为与语言无关,但这也意味着我必须将选择限制在MongoDB支持的语言之一(Python,Ruby,Perl,PHP,Java和C++)中,这是一个非常宽网。我更喜欢动态语言,但我愿意接受任何建议。

我已经能够找到Scrapy(看上去整洁)和JSpider(这看起来不错,但也许有点太“重型”,基于121页的用户手册),但我想看看是否有是我失踪的其他很好的选择。

+1

关于JSpider提的是,最后一个版本从2003年根据http://j-spider.sourceforge.net/news.html茎它可能是值得,再加上这个论坛条目暗示事实上项目过多死亡:HTTP:/ /sourceforge.net/forum/message.php?msg_id=5600799;这不一定是显示塞但我个人会是十分勉强地建立在这个当今顶级的解决方案 - 所有网络正在发生变化非常快,尽管其稳定和成熟的基础协议和机制之后。 – 2009-08-23 16:42:23

回答

6

我想你已经搜索过堆栈溢出了,因为在那些标记为web-crawler的标记中有很多相似的问题吗?已经使用没有广泛以下我从制定避免,只是列举一些我觉得值得手头审查任务:

  • 的Python
  • 红宝石(根本就不会使用这些)
  • 的Perl
  • 的Java
    • Nutch:相当成熟的项目,有据可查的,专用的可扩展性,基于Apache Lucene,这是非常成熟的,具有很强的社会;仍然存在关于高级集成方案的问题,请参阅this question
    • Heritrix:非常成熟的项目,有据可查的,专用的可扩展性,在Internet Archive的骨干;似乎更好地解决了一些高级集成方案,请参见this question

嗯,好运气的审查;)

0

您也可以尝试用Node.js的PhantomJS CasperJS

0

StormCrawler不在身边,当有人问这个问题,但会完全适合该法案。它在Java中是高度模块化和可扩展的,并且可以被定制为完成上面描述的内容。