良好的实时/并行HTTP爬虫库/平台?

我正在构build一个爬虫程序,可以从多个网站并行获取信息,以响应客户对这些信息的请求。 我需要从10-20个网站请求特定的页面,parsing他们的内容以获取特定的信息片段,并尽快将这些信息返回给客户端。 我想asynchronous执行,所以客户端在第一个结果准备就绪的时候显示第一个结果,而其他的请求仍然在等待处理。

我有一个Ruby背景,因此更愿意在Ruby中构build解决scheme – 但是,并行性和速度正是Ruby不为人知的。 我相信像EventMachine和Typhoeus这样的图书馆可以弥补这一点,但我也强烈地考虑node.js ,因为我知道javascript很好,似乎是为这样的事情而构build的。

无论我select什么,我也需要一种有效的方式将结果传达给客户。 我正在考虑简单的AJAX(但这将需要轮询服务器),networking套接字(但这将需要回退旧版本的浏览器)和持久的客户端/服务器通信的具体解决scheme,如抽筋 , 剑圣和推者 。

有没有人有任何经验和/或build议,他们想分享?

节点绝对有能力处理这种types的任务 – asynchronous套接字和http通信被烘烤,真的很愉快的工作。

我的大部分工作都是j / Ruby,而且我已经发现向服务器端JavaScript的转换非常痛苦 – 多年的web开发意味着我非常了解js,服务器开发概念在很大程度上与语言无关。

在通信方面, Socket.io是一个优秀的客户端和服务器框架,用于处理节点中的套接字通信 – 它支持flash,ajax和websocket通道,这意味着它可以用于任何现代(和一些较老的)浏览器。

如果您的抓取工具需要JavaScript支持,我build议http://htmlunit.sourceforge.net/
有一个JRuby包装http://celerity.rubyforge.org/

特点(从网站采取)包括:

  • 快速 – 无需耗费时间的GUI渲染或不必要的下载
  • 易于使用 – 简单的API
  • JavaScript支持
  • 可伸缩 – Java线程可让您并行运行testing
  • 便携式 – 跨平台感谢JVM
  • 不干扰 – 没有浏览器窗口中断您的工作stream程(在后台运行)