首页 > 解决方案 > 如何使用 Scrapyd 和 ScrapydWeb 在集群中分布蜘蛛?

问题描述

我正在一个使用 Scrapy 的爬行项目中工作,我需要将我的蜘蛛分布在集群中的不同节点上,以加快进程。我正在使用 ScrapydWeb 来管理它,并且我已经配置了两台机器,其中一台安装了 ScrapydWeb,两台都安装了 Scrapyd。Web App 可以识别两者,我可以正常运行我的蜘蛛。问题是爬取只是并行运行(两台机器都在获取内容),我的目的是以分布式方式进行,以最大限度地减少爬取时间。

有人可以帮助我吗?先感谢您。

标签: scrapyweb-crawlerdistributed-computingscrapyd

解决方案


我不认为 Scrapyd 和 ScrapydWeb 提供了跨不同服务器运行蜘蛛的可能性,而不仅仅是完全运行同一个蜘蛛。如果您想分发抓取,您可以:

  • 仅在 1 个服务器上运行 1 个蜘蛛
  • 如果您需要实际的分布式抓取(其中相同的蜘蛛在不同的机器上运行而没有多台机器解析相同的 url),您可以查看Scrapy-Cluster
  • 您可以编写自定义代码,其中有 1 个进程生成要在一侧抓取的 url,将找到的 url 放入队列中(使用 Redis fe),并让多个服务器从该队列中弹出 url 以获取和解析页面

推荐阅读