Scrapy 是否可以为每个请求从start_requests()到parse()传递一个变量?

Scrapy 是否可以为每个请求从start_requests()到parse()传递一个变量?,scrapy,Scrapy,我正在使用循环在start\u request()中生成请求,我希望将索引传递到parse(),以便它可以将其存储在项目中。但是,当我使用self.I时,每个项目的输出都有I最大值(最后一圈)。我可以使用response.url.re('regex来提取索引'),但我想知道是否有一种干净的方法来从start\u请求传递变量进行解析。您可以使用scrapy.Requestmeta属性: import scrapy class MySpider(scrapy.Spider): name =

我正在使用循环在
start\u request()
中生成请求,我希望将索引传递到
parse()
,以便它可以将其存储在项目中。但是,当我使用
self.I
时,每个项目的输出都有
I
最大值(最后一圈)。我可以使用
response.url.re('regex来提取索引')
,但我想知道是否有一种干净的方法来从start\u请求传递变量进行解析。

您可以使用
scrapy.Request
meta
属性:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        urls = [...]
        for index, url in enumerate(urls):
            yield scrapy.Request(url, meta={'index':index})

    def parse(self, response):
        print(response.url)
        print(response.meta['index'])

您可以将
cb_kwargs
参数传递给
scrapy.Request()


感谢它为我工作,现在我可以创建动态csv文件来存储数据。
import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        urls = [...]
        for index, url in enumerate(urls):
            yield scrapy.Request(url, callback=self.parse, cb_kwargs={'index':index})

    def parse(self, response, index):
        pass