为何抓取工具的运行速度如此之慢?

时间:2019-08-03 17:29:51

标签: python scrapy scrapinghub crawlera

我正在使用scrapy 1.7.3和crawlera(来自scrapinghub的C100计划)和python 3.6。

在启用了爬虫的情况下运行蜘蛛时,我每分钟会得到大约20-40个物品。没有爬虫,我会得到750-1000(但是我很快就被禁止了)。

我配置错了吗?使用爬虫,我应该每分钟至少得到150-300件物品,不是吗?自动油门被禁用。

在下面,您会看到我的蜘蛛以及该蜘蛛的部分settings.py。

import scrapy
from ecom.items import EcomItem

class AmazonSpider(scrapy.Spider):
    name = "amazon_products"
    start_urls = ["https://www.amazon.fr/gp/browse.html?node=3055095031&rh=p_76:1&page=2"]    

    def parse(self, response):
        product_urls = response.xpath("//a[@class='a-link-normal s-access-detail-page s-color-twister-title-link a-text-normal']/@href").extract()

        for product_url in product_urls:
            yield response.follow(product_url, self.parse_product)


    def parse_product(self, response):
        item = EcomItem()
        item["url"] = response.url
        yield item

settings.py

CRAWWLERA_PRESERVE_DELAY = 0
CONCURRENT_REQUESTS = 80
CONCURRENT_REQUESTS_PER_DOMAIN = 80
DOWNLOAD_TIMEOUT = 20
LOG_LEVEL = 'ERROR'
RANDOMIZE_DOWNLOAD_DELAY = True
DOWNLOAD_DELAY = 0
AUTOTHROTTLE_DEBUG = False
AUTOTHROTTLE_MAX_DELAY = 4
AUTOTHROTTLE_START_DELAY = 0
AUTOTHROTTLE_ENABLED = False
COOKIES_ENABLED = False

1 个答案:

答案 0 :(得分:2)

要在将Crawlera与Scrapy结合使用时实现更高的抓取速度,建议禁用“自动限制”加载项,并增加并发请求的最大数量(取决于您的计划)。您可能还想增加下载超时。以下是实现该目的的设置的列表:

CONCURRENT_REQUESTS = 100
CONCURRENT_REQUESTS_PER_DOMAIN = 100
AUTOTHROTTLE_ENABLED = False
DOWNLOAD_TIMEOUT = 30

您可以找到并使用更多的Crawlera请求标头here来优化使用,即:

  • X-Crawlera-Max-Retries(默认值为1),您可以将其更改为0,但可能会看到更多禁令。
  • 如果您希望网站做出更快的反应,可以将
  • X-Crawlera-Timeout(默认值为30000)更改为较小的数字。

更改这些设置可以使您每分钟获得更多结果,但有被禁止或请求超时的风险。