ScrapyRT vs Scrapyd

ale*_*cxe 22 python scrapy web-scraping scrapyd

到目前为止,我们一直在使用Scrapyd服务.它为scrapy项目提供了一个很好的包装器,它的蜘蛛可以通过HTTP API来控制蜘蛛:

Scrapyd是一种运行Scrapy蜘蛛的服务.

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

但是,最近,我注意到另一个"新鲜"的包 - ScrapyRT根据项目描述,听起来非常有前途,类似于Scrapyd:

HTTP服务器,提供用于调度Scrapy蜘蛛并使用蜘蛛发出请求的API.

这个包是否可以替代Scrapyd?如果是的话,这两者有什么区别?

nev*_*stn 17

他们没有多少共同之处.正如您已经看到的,您必须将您的蜘蛛部署到报废,然后安排爬行.scrapyd是在服务器上运行的独立服务,您可以在其中部署和运行您喜欢的每个项目/蜘蛛.

使用ScrapyRT,您可以选择一个项目,然后选择cd该目录.然后你运行eg scrapyrt,你开始通过一个简单的(和非常类似于scrapyd的)REST API 抓取该项目上的蜘蛛.然后,您将获取已爬网的项目作为JSON响应的一部分.

这是一个非常好的主意,它看起来快速,精益和明确.另一方面,Scrapyd更成熟,更通用.

以下是一些主要差异:

  • Scrapyd支持多种版本的蜘蛛和多个项目.据我所知,如果你想用ScrapyRT运行两个不同的项目(或版本),你将不得不为每个项目使用不同的端口.
  • Scrapyd提供了用于将项目保留在服务器中的基础结构,而ScrapyRT在响应时将它们发送给您,对我而言,这意味着它们应该是几MB的顺序(而不是可能的GB).同样,处理日志的方式也是如此与ScrapyRT相比,scrapyd中更通用.
  • Scrapyd(可能是持久的)对作业进行排队,并使您可以控制并行运行的Scrapy进程数.ScrapyRT做了一些简单的事情,据我所知,只要请求到达就开始抓取每个请求.阻止其中一个蜘蛛的代码也会阻止其他蜘蛛.
  • ScrapyRT需要一个url参数,据我所知,它可以覆盖任何start_urls相关的逻辑.

我想说ScrapyRT和Scrapyd在这个时间点上非常巧妙地不重叠.当然,你永远不知道未来会怎样.