关于scrapy使用 meta 循环传递数据不变

大家再使用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传递参数了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值