网络爬虫/网页抓取——自建还是购买?

4
在我看来,此时此刻只有一个工具会占据主导地位,因为该过程似乎足够通用:指向起始URL,与其表格和脚本交互,跟随链接,下载数据。反复洗涤。虽然我一直很满足于构建特定应用程序以跳过一些步骤,从而将几百GB的文档存储到我的硬盘上,但我想知道我是否只是再造轮子。
我承认我没有尝试过Automation Anywhere等商业产品,但由于我正在全职做我真正喜欢的事情 - 分析数据而不是检索数据,所以我希望这里的群众智慧能指引我走向一个明确的讨论方向。难道仅仅是因为有太多的怪癖,无法找到一个单一的工具适用于几乎所有情况吗?
让我澄清或复杂化这个问题 - 我已经看过一些浏览器“宏”类型的工具,比如iRobot、iOpus等,发现它们运行缓慢。对于严重的大型文档集合,我想在集群/云上运行爬虫,所以我不确定这些工具在那种环境下如何工作。对于我的用例,假设我想要...
  • 检索大约一百万个文档
  • 从一个不需要登录但在导航方面大量使用JavaScript的网站中进行检索。
  • 使用亚马逊或Azure服务器来完成工作。

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

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

2个回答

2
由于这在软件界往往是一个灰色地带,因此此类工具似乎缓慢出现。
类似领域的重要工作正在进行中,如通过无头浏览器(如您提到的 iRobot 和 iOpus)进行自动化站点测试。我经常看到 Selenium 被提及,还有一些使用 Apple Webkit 的有趣工具,如 phantomjs,但我无法评论它们的速度或“云能力”。
最近获得显着进展的有趣选择可能是 node.js JavaScript 运行时。据我所知(6 个月前),有些项目正在尝试使用 node 进行爬取,实现高度轻量级的 JavaScript 解释浏览器。... 我相信已经有了云端的 node 选项。
然而,据我所知,最快的爬虫仍然是那些不解释 JavaScript 的爬虫,并依赖开发人员对 http 请求进行传统的预分解。

2
Apache Nutch是一个非常强大的网络爬虫:
  • 它具有高度可扩展性。
  • 它可以仅爬取特定网站(忽略外部链接)。
  • 目前是最快的开源网络爬虫之一。
  • 从头开始构建时考虑到大数据(即与Hadoop集成并允许您在数据上运行MapReduce作业)。
  • 具有各种插件,包括JavaScript解析器。

当然,它是用Java编写的,但如果您熟悉C#,那么Java应该不会那么陌生。有些人对Nutch的复杂性表示关注,但对于任何正在进行严肃爬取的人来说,学习Nutch的细节比构建类似的网络爬虫要容易得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接