我已经用纯Java和selenium构建了一个多线程的web爬行和提取引擎。API中的每个作业都在自己的线程中执行,并将其状态提交回API。每个作业还可以包含提取信息(XPth、正则表达式、CSS选择器)、连接信息(代理凭据)和爬行引擎的挂钩。例如,在保存结果之前单击一个按钮。这个引擎工作得很好,但现在我想在多台机器上并行运行它。我可以用当前的版本做到这一点(有通道支持),但我正在寻找改进和技术,让整个事情变得更好,并学习一些新的东西。
我找到了Akka.io,Apache Spark,Apache Mesos和Apache Storm,并问自己其中一个框架是否可以成为一种技术,我应该花更多的时间来研究它,并在它上重建我的引擎。
实际上,我并不了解这些框架的所有区别和优点,但这就是我问的原因。它们看起来很相似。
我打算用这些框架中的一个来构建一个爬行引擎吗?有人会建议使用框架吗?为什么或者为什么不?
发布于 2015-06-30 08:29:22
我之前帮助构建了一个渲染web爬虫,作为Apache Mesos的示例/教程应用程序。它当然不像您正在构建的那样复杂,但它可能提供了一个很好的架构参考。你可以在https://github.com/mesosphere/rendler上查看它
Mesos提供了许多分布式系统,用于启动任务、监控/发送状态、任务/调度器之间的通信、持久状态、故障转移等。有时我们喜欢将Mesos称为分布式系统SDK。http://mesosphere.github.io/presentations/mesoscon-2014/
https://stackoverflow.com/questions/30887701
复制