到目前为止,我们一直在使用 Scrapyd service。它提供了一个很好的包装器,用于一个抓痒的项目及其蜘蛛,使它们可以通过HTTP API控制蜘蛛:



但是,最近,我注意到了另一个“新鲜”软件包 ScrapyRT ,根据项目描述,它听起来非常有前途,并且类似于Scrapyd:



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

最佳答案

他们没有很多共同点。如您所见,您必须将Spider部署到scrapyd,然后安排爬网。 scrapyd是在服务器上运行的独立服务,您可以在其中部署和运行所需的每个项目/蜘蛛。

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

这是一个很好的主意,它看起来快速,精益且定义明确。另一方面,Scrapyd更成熟,更通用。

以下是一些主要区别:

  • Scrapyd支持多种版本的Spider和多个项目。据我了解,如果您想使用ScrapyRT运行两个不同的项目(或版本),则您将不得不为每个端口使用不同的端口。
  • Scrapyd提供了用于将项目保留在服务器中的基础结构,而ScrapyRT根据响应将它们发送回给您,对我而言,这意味着它们应为几MB左右(而不是潜在的GB)。类似地,日志记录的方式是与ScrapyRT相比,在scrapyd中处理更为通用。
  • Scrapyd(可能持久地)将作业排队,并让您控制并行运行的Scrapy进程的数量。据我所知,ScrapyRT做的事情很简单,就是在请求到达后立即开始对每个请求进行爬网。阻止其中一个蜘蛛中的代码也将阻止其他蜘蛛。
  • ScrapyRT需要一个url参数,据我所知,该参数将覆盖与start_urls相关的任何逻辑。

  • 我要说的是,ScrapyRT和Scrapyd在这一点上并不十分重叠。当然,您永远不知道 future 会怎样。

    关于python - ScrapyRT和Scrapyd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37283531/

    10-09 17:13