针对大量请求的Scrapy模式

时间:2016-05-02 03:42:17

标签: scrapy

我需要刮掉大型网站,每个类别中的文章大约有10个类别和数千个(我真的不知道多少)。最简单的方法是为每个类别创建一个蜘蛛,并为每个下一篇文章链接创建yield响应,以便进一步提取。

我在想的是制作顶级蜘蛛,将文章网址从类别提取到队列。然后,第二级(文章)蜘蛛应该从队列中接收每个恒定数量的URL(比如100),并且当蜘蛛完成时,另一个蜘蛛开始。通过这种方式a)我们可以控制一些蜘蛛,这是一个常数,例如20 b)我们可以选择提前计算文章的数量c)蜘蛛的内存使用量有限。在之前的项目中,类似的工作正常。

这是否有意义,或者您可以尽可能多地从一只蜘蛛发出请求,它会正常工作吗?

1 个答案:

答案 0 :(得分:1)

你可以从一只蜘蛛身上发出尽可能多的请求。

这是因为scrapy不会立即处理所有请求,它们只是排队等待。

您可以使用CONCURRENT_REQUESTS更改设置上要处理的请求数,如果它太高(例如100),这确实可能会导致内存使用问题。请记住,scrapy作业默认情况下每个作业设置512mb的内存。