2016-05-17 93 views
19

我们一直使用Scrapyd service一段时间,直到现在。它为scrapy项目提供了一个很好的包装,它的蜘蛛让它通过HTTP API来控制蜘蛛:ScrapyRT vs Scrapyd

Scrapyd是一个运行Scrapy蜘蛛的服务。

它允许您使用HTTP JSON API部署您的Scrapy项目并控制其蜘蛛 。

但是,最近,我发现另一种“新鲜”包装 - ScrapyRT,根据项目介绍,听起来非常有前途和类似Scrapyd:这为调度提供API

HTTP服务器Scrapy蜘蛛和蜘蛛制作请求。

这个包是Scrapyd的替代品吗?如果是,那么两者有什么区别?

回答

14

他们没有很多共同点。正如您已经看到的,您必须将您的蜘蛛部署到scrapyd,然后安排抓取。 scrapyd是一个在服务器上运行的独立服务,您可以在其中部署和运行您喜欢的每个项目/蜘蛛。

使用ScrapyRT,您可以选择一个项目,然后将cd指定到该目录。然后你运行例如scrapyrt,然后通过简单的(并且非常类似于scrapyd的)REST API,开始在该项目上抓取蜘蛛程序。然后您将抓取的项目作为JSON响应的一部分返回。

这是一个非常好的想法,它看起来很快,精益和定义。另一方面,Scrapyd更成熟,更通用。

这里有一些关键的区别:

  • Scrapyd支持蜘蛛和多个项目的多个版本。就我可以看到的是,如果要使用ScrapyRT运行两个不同的项目(或版本),则必须为每个项目使用不同的端口。
  • Scrapyd提供了用于在物品保存在服务器中的基础设施,而ScrapyRT将它们发回给您的响应中,对我而言,这意味着它们应该处于几MB(而不是潜在GB)的顺序。同样,与ScrapyRT相比,在scrapyd中处理日志更为通用。
  • Scrapyd(可能会持续)将作业排队,并让您控制并行运行的Scrapy进程的数量。 ScrapyRT做了一些简单的事情,据我所知,只要请求到达,就立即开始抓取每个请求。在其中一个蜘蛛中拦截代码也会阻止其他人。
  • ScrapyRT需要url参数,据我所知可以覆盖任何与start_urls相关的逻辑。

我会说ScrapyRT和Scrapyd在这个时候非常巧妙地不重叠。当然,你永远不知道未来会是什么。

+0

现在我看到了差异!谢谢!并再次感谢这本惊人的书,迪米特里奥斯! – alecxe

+0

非常欢迎,非常感谢@alecxe!并且非常感谢这个出色的问题! :) – neverlastn