python - ScrapyRT 与 Scrapyd

标签 python web-scraping scrapy scrapyd

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

Scrapyd is a service for running Scrapy spiders.

It allows you to deploy your Scrapy projects and control their spiders using a HTTP JSON API.

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

HTTP server which provides API for scheduling Scrapy spiders and making requests with spiders.

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

最佳答案

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

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

相关文章:

r - 使用 R 下载 *.xls 文件会生成错误

python - 如何从不使用 POST 的网站抓取信息

python - 如何使用 Python Scrapy 模块列出我网站上的所有 URL?

python - 向数据框中添加几列,计算与其他 3 列相对应的中位数

c# - Primary 宕机,Secondary 现在是 Primary - 如何写入新的 Primary?

python - 使用 Jenkins 中的管道执行 pytest

html - 从网页获取数据

python-3.x - 从 Div 标签中提取文本数据,而不是从子 H3 标签中提取文本数据

python - 如何将数据传递到scrapinghub?

python - 使用Python获取日期字符串的最佳方法