2016-05-16 60 views
1

我想用scrapy构建一个广泛的爬虫,怎样才能运行许多并发的蜘蛛但同时保持它们爬行不变的域?用scrapy广泛爬行

回答

0

运行同一个域的多个蜘蛛的目的是什么? 你想加速爬行过程还是蜘蛛有不同的逻辑?

  1. 如果首先看看docs。您应该在settings.py文件中增加CONCURRENT_REQUESTS = 100。一只蜘蛛就足够了。

  2. 如果蜘蛛有不同的逻辑,只需为它们中的每一个创建一个分离类。

+0

是的,我想在不同的域上运行多个蜘蛛。如果问题不清楚,我很抱歉。如果设置CONCURRENT_REQUESTS = 100和CONCURRENT_REQUESTS_PER_IP = 1,这是否解决了这个问题,我将有100个不同的蜘蛛每个抓取自己的域? – codeer

+0

这将是同一个蜘蛛,看看[文档](http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests-per-ip)[+](http:/ /doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests) –

0

我想我明白你来自哪里。您希望每个域都进行分布式限制,以便您可以并行运行多个爬网,同时尊重每个网站的限制。要做到这一点,您需要开发一个与蜘蛛共享的东西(数据库?)交谈的中间件。

一个众所周知的这样的系统是​​。

正如你所看到的here它支持细粒度的分布式控制,你可以控制每个域的“难度”。

它还具有类似于您要查找的重复数据删除功能(请参阅here)。主要的区别在于它并没有反映出Item的要求,但是这应该会更好。

+0

是的,这正是我期待的。我想要1.让我的刮板使用相同的域池,2.所有的蜘蛛将它们的物品返回到同一个刮取物品池,在那里它们被过滤以获得重复。 3.确保它们不在相同的域上开始爬网。废钢云是否具有这种内置的功能?我刚刚看到他们的网站。 – codeer

+0

更新了上面的注释。 – neverlastn

0

或者,如果您需要的是分布式爬网程序,则可以使用NutchStormCrawler代替。两者都设计为在分布式集群上运行,前者使用Apache Hadoop和后者Apache Storm。