网页爬行/刮痧 - 建造还是购买?

时间:2012-02-06 16:42:38

标签: web-crawler web-scraping

在我看来,在这个时间点,一个工具就会升级为支配地位,因为这个过程似乎足够通用:指向一个起始URL,与其表单和脚本交互,按照链接,下载数据。冲洗,重复。虽然我总是在构建临时应用程序时获得一定的满足感,以便在我的硬盘上获得几百个文档,我想知道我是不是只是重新创建了这个轮子。

我承认我没有尝试像Automation Anywhere这样的商业产品,但是因为我正在努力做一个我真正喜欢做的事情,分析数据而不是检索它,我希望有智慧这里的人群可以指出我一个明确的讨论方向。只是有太多的怪癖才能拥有单一工具适合几乎所有的情况吗?

让我澄清或复杂一点 - 我已经看过许多浏览器“宏”类工具,比如iRobot,iOpus,发现它们很慢。对于非常大的文档集合,我想在集群/云上运行爬虫,所以我不确定它们在该环境中如何工作。对于我的用例,假设我想

  • 检索大约一百万份文件
  • 来自不需要登录但大量使用javascript进行导航的网站。
  • 使用Amazon或Azure服务器完成工作。

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

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

2 个答案:

答案 0 :(得分:2)

由于它在软件世界中往往有些灰色,因此这些工具似乎很难出现。

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

最近获得重大关注的有趣选项可能是node.js javascript运行时。我检查的最后一个(6个月前)有一些项目在使用节点进行抓取,实现了一个高度轻量级的JavaScript解释浏览器。 ...而且我相信云已有节点选项。

然而,AFAIK,最快的刮刀仍然是那些不能解释javascript的人,并且依赖于开发人员对http请求的老式预分解。

答案 1 :(得分:2)

Apache Nutch是一个非常强大的抓取工具:

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