首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Scrapyd和ScrapydWeb在集群中分布爬虫?

如何使用Scrapyd和ScrapydWeb在集群中分布爬虫?
EN

Stack Overflow用户
提问于 2020-05-07 00:33:27
回答 2查看 714关注 0票数 2

我在一个使用Scrapy的爬虫项目中工作,我需要将我的爬虫分布在集群中的不同节点上,以使过程更快。我正在使用ScrapydWeb来管理它,并且我已经配置了两台机器,其中一台配置了ScrapydWeb up,两台都配置了Scrapyd up。Web应用程序可以识别这两种情况,我可以正常运行爬行器。问题是爬行是并行运行的(内容是由两台机器获取的),我的目的是以一种分布式的方式进行爬行,以最小化爬行时间。

有人能帮我吗?提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2020-05-07 13:45:53

我不认为Scrapyd & ScrapydWeb提供了跨不同服务器运行爬行器的可能性,而不仅仅是完全运行相同的爬行器。如果您想要分发爬网,您可以:

  • 只在一台服务器上运行1个爬虫
  • 如果你需要实际的分布式爬行(相同的爬虫运行在不同的机器上,而不是多个机器解析相同的url),你可以查看Scrapy-Cluster
  • You可以编写自定义代码,其中你有一个进程生成url来抓取一侧的url,将找到的url放在一个队列中(使用Redis f.e.),并让多个服务器从这个队列中弹出url来获取和解析页面
票数 1
EN

Stack Overflow用户

发布于 2020-08-10 10:59:34

我使用Scrapy Cluster解决了这个问题,并分享了我的经验:

Docker安装对我来说很难控制和调试,所以我尝试了Cluster Quick-start,它工作得更好。

我的集群中有五台机器可用,其中一台用来托管Apache Kafka和Zookeeper。我还为Redis DB准备了一个。重要的是要确保这些机器可以从你要用于爬网的机器上进行外部访问。

在正确安装并运行这三个组件之后,我在python3.6环境中安装了Scrapy Cluster的要求。然后,我使用主机的IP地址配置了一个本地设置文件,并确保所有在线和离线测试都通过了。

一切就绪后,我就可以运行第一个爬虫了(官方文档提供了一个示例)。其思想是为爬行器创建实例(例如,您可以使用tmux打开10个不同的终端窗口,并在每个窗口中运行一个实例)。当您向Apache Kafka提供一个要爬行的URL时,它将被发送到Redis的一个队列,您的实例将定期在该队列中查找要爬行的新页面。

如果您的爬行器从您最初传递的URL生成更多的URL,它们将返回到Redis,可能会被其他实例爬行。这就是你可以看到这个发行版的力量的地方。

一旦一个页面被抓取,结果就会被发送到Kafka主题。

official documentation非常庞大,您可以找到有关安装和设置的更多详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61640365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档