2012-02-06 54 views
4

在我看来,在这个时间点上,一个单一的工具将升级为主导,因为这个过程似乎足够通用:指向一个起始URL,与它的表单和脚本交互,跟随链接,下载数据。冲洗,重复。虽然我总是在构建临时应用程序时获得某种满足感,以便在硬盘上跳过几百个文件,但我不知道是不是在重新创建轮子。Web爬行/刮 - 建立或购买?

我承认我还没有尝试过一些像Automation Anywhere这样的商业产品,但是因为我试图让全职工作做我真正喜欢做的事情,分析数据而不是检索它,我希望这里人群的智慧可以将我指向明确的讨论方向。是不是有太多的怪癖有一个单一的工具几乎所有的情况?

让我澄清或复杂 - 我看过一些浏览器“宏观”类型的工具,如iRobot,iOpus,发现它们很慢。对于严重的大型文档集合,我希望在集群/云上运行爬网程序,所以我只是不确定这些工具在那种环境下如何工作。对于我的使用情况下,比方说我要

  • 检索大约有一百万文档
  • 从不需要登录,但是使得导航大量使用JavaScript的一个网站。
  • 使用Amazon或Azure服务器来完成这项工作。

一个例子可能是这个网站上,来自美国人口普查(有更有效的方式从他们那里得到的数据,但该网站的风格是数据量和导航的一个很好的例子):

http://factfinder2.census.gov/faces/nav/jsf/pages/searchresults.xhtml?ref=addr&refresh=t

回答

2

由于它在软件世界中往往是一个灰色地带,所以这些工具似乎很慢出现。

在类似的领域,像通过无头浏览器进行自动化站点测试(如您提到的iRobot和iOpus),正在开展大量工作。我看到Selenium也提到了很多,并且有一些使用Apple Webkit的有趣工具,例如phantomjs,但我无法评论他们的速度或“云能力”。

最近获得重要推动的一个有趣的选择可能是JavaScript运行时间为node.js。最后一次检查(6个月前)有一些项目在使用节点进行抓取,实现了一个轻量级的JavaScript解释浏览器。 ...我相信已经有云节点选项。

然而,AFAIK,最快的刮板仍然是那些不解释JavaScript,并依赖于开发人员对传统HTTP请求的预先分解。

2

Apache Nutch是一个非常强大的爬虫:

当然,它是用Java编写的,但如果你熟悉C#那么Java不应该是外国人。有些人对Nutch的复杂性表示担忧,但对于任何认真抓取的人来说,了解Nutch的注意事项要比构建类似的网络爬虫要容易得多。