scrapy中meta如何接收多个字典?

在第一个函数district_parse中,detail2是一个列表字典,里面包含多个字典,我想将这些字典作为参数循环传入meta,但总是只能传入第一个字典,有什么解决办法?

    def district_parse(self,response):
        item2 = response.meta["item"]
        Data2 = json.loads(re.findall(r'[(](.*?)[)]', response.text)[0])
        detail2 = Data2['data']['list']
        for loop1 in detail2:
            item2["district_time"] = loop1["timeHuman"]
            item2["district_name"] = loop1["district_name"]
            item2["district_congest"] = loop1["index"]
            item2["district_speed"] = loop1["speed"]
            item2["district_length"] = loop1["length"]

            url = "https://www.example.com"
            yield Request(url, meta={"item2": copy.deepcopy(item2)}, callback=self.curvehistory_parse)



    def curvehistory_parse(self,response):
        item3 = response.meta.get('item2')
        Data3 = json.loads(re.findall(r'[(](.*?)[)]', response.text)[0])
        detail3 = Data3['data']['list']
        for loop2 in detail3:
            item3["index"] = loop2["index"]
            item3["indexHis"] = loop2["indexHis"]
            item3["date"] = loop2["time"]
            yield copy.deepcopy(item3)

 

district_parse函数中有 yield 说明是生成器函数,要用next()多次调用才行。

或者用for循环调用。

for res in self.district_parse(xxxxxxxx):

    pass

 

如果你不是要生成器函数就不要用yield

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y