如何将变量传递给 Scrapy 中的 parse_item 方法?

How to pass variable to parse_item method in Scrapy?

我正在尝试将变量 (sku) 传递给 Scrapy 中的 parse_item 方法。这导致:

TypeError: init() got an unexpected keyword argument 'sku'

我的代码:

def start_requests(self):
    for sku in self.SKUs:
        url = 'https://www.test' + sku
        if validators.url(url):
            yield scrapy.Request(
                url=url,
                sku=sku,
                callback=self.parse_item,
            )
        else:
            print("Invalid URL ", format(url))

def parse_item(self, response):

    shop['sku'] = self.sku

如何将变量sku传递给parse_item方法?

您需要使用 cb_kwargs 参数(或旧 Scrapy 版本中的 meta):

def start_requests(self):
    for sku in self.SKUs:
        url = 'https://www.test' + sku
        if validators.url(url):
            yield scrapy.Request(
                url=url,
                cb_kwargs={
                    'sku': sku,
                },
                callback=self.parse_item,
            )
        else:
            print("Invalid URL ", format(url))

def parse_item(self, response, sku):
    shop['sku'] = sku