ScrapyRT 与 Scrapyd

Posted

技术标签:

【中文标题】ScrapyRT 与 Scrapyd【英文标题】:ScrapyRT vs Scrapyd 【发布时间】:2016-09-13 23:46:56 【问题描述】:

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

Scrapyd 是用于运行 Scrapy 蜘蛛的服务。

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

但是,最近,我注意到另一个“新鲜”包 - ScrapyRT,根据项目描述,它听起来很有前途,类似于Scrapyd

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

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

【问题讨论】:

【参考方案1】:

他们没有太多共同点。正如您已经看到的,您必须将您的蜘蛛部署到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 非常巧妙地不会在这个时间点重叠。当然,你永远不知道未来会怎样。

【讨论】:

现在我看到了不同之处!谢谢!再次感谢 Dimitrios 的精彩书籍! 非常欢迎,非常感谢@alecxe!非常感谢您提出的出色问题! :) 有人知道如何永久运行scrapyrt吗?这意味着我注销了终端,它仍在运行并侦听来自我或我的服务器的传入请求。

以上是关于ScrapyRT 与 Scrapyd的主要内容,如果未能解决你的问题,请参考以下文章

你如何使用 forever.js 或 pm2 运行 scrapyrt?

Python3网络爬虫实战-14部署相关库的安装:ScrapyrtGerapy

单个 Scrapy 项目与多个项目

scrapy部署

scrapyd 配置文件

scrapy项目部署_1