首页 > 解决方案 > 如何在scrapy中循环传递'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)

'detail2' 是一个包含多个字典的列表。我想将多个字典作为参数依次传递给'meta',但始终只能传入第一个字典。如何解决?

标签: scrapyrequest

解决方案


  1. 在 District_parse 之后创建一个名为 'parse_details' 的新方法,它将对输出文件进行输出。

  2. 在 District_parse 中添加一个回调,例如 callback=self.parse_details 并一次将元字典传递给新方法,以从“parse_details”方法产生输出。


推荐阅读