我正在尝试使用scrapy构建一个广泛的爬虫,如何运行许多并发蜘蛛,但同时阻止它们爬行到同一个域?
答案 0 :(得分:0)
使用相同域运行多个蜘蛛的目的是什么? 你想加速爬行过程或蜘蛛有不同的逻辑吗?
如果是第一个,请查看docs。您应该在CONCURRENT_REQUESTS = 100
文件中增加settings.py
。一只蜘蛛就足够了。
如果蜘蛛有不同的逻辑,只需为每个蜘蛛创建一个separete类。
答案 1 :(得分:0)
我想我知道你来自哪里。您希望每个域分布式限制,以便您可以并行运行多个爬网,同时遵守每个网站的限制。要做到这一点,你需要开发一个与蜘蛛共享的东西(数据库?)对话的中间件。
一个众所周知的此类系统是scrapy-cluster。
正如您所看到的here它支持细粒度的分布式控制,如何"硬"你击中了每个领域。
它还具有类似于您正在寻找的重复数据删除功能(请参阅here)。主要的区别在于它并没有重复Item
但是请求但这应该更好。
答案 2 :(得分:0)
或者,如果您需要的是分布式抓取工具,则可以使用Nutch或StormCrawler代替。两者都设计为在分布式集群上运行,前者使用Apache Hadoop,后者使用后者Apache Storm。