大家再使用scrapy框架的时候,新手使用的话,再通过meta 传递变量的时候。如果加入循环再其中,机会有变量都是最后一个值,如下:
def parse(self, response):
for i in range(0,10)
param={"rangeint":i}
yield scrapy.Request(url,callback=self.test,meta={"param":param})
def test(self,response):
response.meta.get("param")
print(param["rangeint"])
其中最后 打印出来的10次 9,最后发现其实再传递数据的时候,循环后传递的都是最后一个复制
对此需要时候导入copy
import copy
def parse(self, response):
for i in range(0,10)
param={"rangeint":i}
yield scrapy.Request(url,callback=self.test,meta={"param":copy.deepcoopy(param)})
def test(self,response):
response.meta.get("param")
print(param["rangeint"])
这样才能依次打印出0—9
这样大家可以清晰看出如何使用meta传递参数了。