我正在使用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
答案 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)更改为较小的数字。更改这些设置可以使您每分钟获得更多结果,但有被禁止或请求超时的风险。