【问题标题】:Extensible/Customizable Web Crawling engines / frameworks / libraries?可扩展/可定制的网络爬虫引擎/框架/库?
【发布时间】:2010-11-21 07:36:33
【问题描述】:

我有一个比较简单的案例。我基本上想存储有关各个网站之间链接的数据,并且不想限制域。我知道我可以使用一些 http 客户端库编写自己的爬虫,但我觉得我会做一些不必要的工作——确保页面不会被多次检查,研究如何阅读和使用 robots.txt 文件,甚至可能尝试使其并发和分布式,而且我敢肯定还有很多其他的事情我还没有想到。

所以我想要一个网络爬取框架来处理这些事情,同时允许我决定如何处理响应(在我的例子中,只是提取链接并存储它们)。大多数爬虫似乎都认为您正在为搜索网页编制索引,这不好,我需要一些可定制的东西。

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

我已经能够找到Scrapy(看起来很整洁)和JSpider(看起来不错,但根据 121 页的用户手册,可能有点过于“繁重”),但我想看看我是否还有其他不错的选择。

【问题讨论】:

  • 关于 JSpider 可能值得注意的是,根据j-spider.sourceforge.net/news.html,最后一个版本源于 2003 年,而且这个论坛条目也暗示了事实上的项目死亡:sourceforge.net/forum/message.php?msg_id=5600799;这不一定是一个表演障碍,但我个人今天不太愿意在此基础上构建一个解决方案 - 毕竟网络变化非常快,尽管其稳定和成熟的基础协议和机制。

标签: language-agnostic hyperlink web-crawler


【解决方案1】:

我想您自己已经搜索过 Stack Overflow,因为在标记为 web-crawler? 的那些问题中有很多非常相似的问题?由于没有广泛使用以下任何一项,因此我不再详细说明,仅列出一些我认为对于手头的任务值得回顾的内容:

  • 蟒蛇
  • Ruby(从未使用过这些)
  • Perl
  • Java
    • Nutch:相当成熟的项目,有据可查,专门的可扩展性,基于Apache Lucene,非常成熟,拥有强大的社区;高级集成方案似乎仍然存在问题,请参阅this question
    • Heritrix:非常成熟的项目,有据可查,专门的可扩展性,Internet Archive 的骨干;似乎可以更好地解决某些高级集成场景,再次请参阅this question

好吧,祝你审查顺利;)

【讨论】:

    【解决方案2】:

    您也可以在 Node.JS 中尝试 CasperJS 和 PhantomJS。

    【讨论】:

      【解决方案3】:

      StormCrawler 在被问到这个问题时不在身边,但完全符合要求。它采用 Java 编写,具有高度模块化和可扩展性,并且可以进行定制以完全按照上述说明进行操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多