【发布时间】: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