如何使用scrapy每晚刮掉成千上万的网址

时间:2017-10-24 12:54:16

标签: python scrapy scrapy-spider scrapy-splash scrapy-pipeline

我正在使用scrapy来刮取一些大品牌来导入我网站的销售数据。目前我正在使用

DOWNLOAD_DELAY = 1.5

CONCURRENT_REQUESTS_PER_DOMAIN = 16

CONCURRENT_REQUESTS_PER_IP = 16

我使用Item加载器指定css / xpath规则和Pipeline将数据写入csv。我收集的数据是原价,销售价格,颜色,尺寸,名称,图片网址和品牌。

我只为一个拥有大约10万网址的商家写了蜘蛛,这需要我大约4个小时。

我的问题是,对于10k网址,4小时听起来是否正常,或者它应该比那更快。如果是这样,我还需要做些什么来加快速度。

我在本地只使用一个SPLASH实例进行测试。但在生产中我计划使用3个SPLASH实例。

现在主要问题是,我有大约125个商家和每个平均10k产品。他们中的一对有超过150k的网址。

我需要每晚清理所有数据以更新我的网站。 由于我的单个蜘蛛花了4个小时来刮掉10k网址,我想知道每晚实现125 x 10k网址是否真的是有效的梦想

我将非常感谢您对我的问题的经验输入。

1 个答案:

答案 0 :(得分:5)

您的DOWNLOAD_DELAY是按IP强制执行的,因此如果只有1个IP,则10,000个请求将需要15000秒(10,000 * 1.5)。那只是4个多小时。所以是的,这是关于正确的。

如果您正在抓取多个站点,那么它们将是不同的IP地址,因此它们应该或多或少地并行运行,因此仍然需要4个小时左右。

如果您要抓取125个网站,那么您可能会在某个时刻遇到不同的瓶颈。