Python 我如何在不使用“";”的情况下在Scrapy解析方法之间同步数据;meta";?

Python 我如何在不使用“";”的情况下在Scrapy解析方法之间同步数据;meta";?,python,web-scraping,scrapy,web-crawler,Python,Web Scraping,Scrapy,Web Crawler,除了使用meta,我还想使用其他方法,因为meta目前用于处理我的spider中的302响应。当我在此字典中添加额外项以同步数据时,302响应将被忽略 def start_requests(self): for url in urls: self.rowExt = row yield scrapy.Request( url=url, callback=self.parse, dont_filt

除了使用meta,我还想使用其他方法,因为meta目前用于处理我的spider中的302响应。当我在此字典中添加额外项以同步数据时,302响应将被忽略

    def start_requests(self):
        for url in urls:
            self.rowExt = row
            yield scrapy.Request(
                url=url, callback=self.parse, dont_filter=True,
                meta={
                    'dont_redirect': True,
                    'handle_httpstatus_list': [302],
                }
            )
如果我向这个字典中添加任何额外的项,302响应处理将不起作用

    def start_requests(self):
        for url in urls:
            self.rowExt = row
            yield scrapy.Request(
                url=url, callback=self.parse, dont_filter=True,
                meta={
                    'dont_redirect': True,
                    'handle_httpstatus_list': [302],
                    'Name': name,
                    'Price': price,
                }
            )

如果您使用的是Scrapy v1.7+,您可以使用,其使用方式有些类似

    yield scrapy.Request(
        url=url, callback=self.parse, dont_filter=True,
        meta={
            'dont_redirect': True,
            'handle_httpstatus_list': [302],
        },
        cb_kwargs={
            'name': name,
            'price': price,
        }
    )

    def parse(self, response, name, price):
        ....

请注意,传递到
cb_kwargs
中的项作为关键字参数传递到回调函数中,因此您需要相应地调整函数签名。

非常感谢。没问题,如果我的答案解决了问题,请点击复选标记接受它。绝对值得记住关于作为关键字参数在回调函数中传递的那一点。当你在文档中读到这一点时,你就会忽略它。