scrapy - 如何使用 Scrapyd 和 ScrapydWeb 在集群中分布蜘蛛?
问题描述
我正在一个使用 Scrapy 的爬行项目中工作,我需要将我的蜘蛛分布在集群中的不同节点上,以加快进程。我正在使用 ScrapydWeb 来管理它,并且我已经配置了两台机器,其中一台安装了 ScrapydWeb,两台都安装了 Scrapyd。Web App 可以识别两者,我可以正常运行我的蜘蛛。问题是爬取只是并行运行(两台机器都在获取内容),我的目的是以分布式方式进行,以最大限度地减少爬取时间。
有人可以帮助我吗?先感谢您。
解决方案
我不认为 Scrapyd 和 ScrapydWeb 提供了跨不同服务器运行蜘蛛的可能性,而不仅仅是完全运行同一个蜘蛛。如果您想分发抓取,您可以:
- 仅在 1 个服务器上运行 1 个蜘蛛
- 如果您需要实际的分布式抓取(其中相同的蜘蛛在不同的机器上运行而没有多台机器解析相同的 url),您可以查看Scrapy-Cluster
- 您可以编写自定义代码,其中有 1 个进程生成要在一侧抓取的 url,将找到的 url 放入队列中(使用 Redis fe),并让多个服务器从该队列中弹出 url 以获取和解析页面
推荐阅读
- widget - Fiware Wirecloud 地图查看器小部件不工作
- android - 在 Android 上获取 Unity 游戏场景的渲染时间
- c++ - 无法将“SDL_Rect”转换为“const SDL_Rect*”
- javascript - Javascript 仅更改标签文本
- google-cloud-bigtable - Google Bigtable:时间戳扫描
- sql - 使用触发器插入值或吐出错误
- botframework - 托管在 Microsoft 团队中的机器人可以读取他们的应用清单文件吗?
- angular - 如何在 Angular *ngFor 中首先显示某些项目
- android - 将 imageview 排列在顶部布局的中间
- marklogic - XQuery 到 CTS 查询的转换