3

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

在启用 crawlera 的情况下运行蜘蛛时,我每分钟大约可以处理 20 到 40 个项目。如果没有 crawlera,我会得到 750 - 1000(但我当然很快就会被禁止)。

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

下面你会看到我的蜘蛛和我的蜘蛛设置.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

设置.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
4

1 回答 1

3

为了在将 Crawlera 与 Scrapy 一起使用时实现更高的爬网率,建议禁用 Auto Throttle 插件并增加最大并发请求数(取决于您的计划)。您可能还想增加下载超时。以下是实现该目的的设置列表:

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

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

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

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

于 2019-08-03T18:20:13.770 回答