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