我正在构建一个爬虫,它可以从多个网站实时并行获取信息,以响应客户端对这些信息的请求。我需要从 10-20 个网站请求特定页面,解析它们的内容以获取特定的信息片段,并尽快将这些信息返回给客户端。我想异步执行此操作,因此客户端在准备好后立即显示第一个结果,而其他请求仍处于待处理状态。
我有 Ruby 背景,因此更愿意在 Ruby 中构建解决方案 - 然而,并行性和速度正是 Ruby 所不擅长的。我相信诸如EventMachine和Typhoeus 之类的库可以解决这个问题,但我也在强烈考虑node.js,因为我非常了解 javascript 并且似乎是为这种事情而构建的。
无论我选择什么,我还需要一种有效的方式将结果传达给客户。我正在考虑普通的 AJAX(但这需要轮询服务器)、Web 套接字(但这需要对旧版浏览器进行回退)和用于持久客户端/服务器通信的特定解决方案,例如Cramp、Juggernaut和Pusher。
有没有人想分享任何经验和/或建议?