没有通过meta属性传递正确的项目

2024-10-02 12:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似的问题,下面的个人有。我试图使用meta属性传递一个项。我看到了正确数量的项目输出,但它们是一个项目的重复。有人能帮忙吗?我猜mby对前一个人的帖子的反应是,这应该是一个明显的修复。在

https://github.com/scrapy/scrapy/issues/1257

def parse(self, response):
# some treatment
# a loop
     request = scrapy.Request(url=<calculated_url>, callback=parseChapter)
     request.meta['item'] = # a dictionary containing some data of the just parsed page
     yield request

def parseChapter(self, response):
# some treatment
# a loop
     request = scrapy.Request(url=<calculated_url>, callback=parseCategory)
     request.meta['item'] = # a dictionary containing some data of the just parsed page
     # print request.meta['item'] is good and different in every iteration
     yield request

def parseCategory(self, response):
# print response.meta['item'] is not good because it displays the same value many times
# for every new call of parseChapter, meta['item'] received is always the same
# some treatment

Tags: ofthe项目selfurlisresponserequest
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:39

最有可能的情况是,在for循环的每次迭代中修改项,而不是创建新的项。在

因此,发送的所有请求都具有相同的值。i、 项目变量的最后一个值。在

def parseChapter(self, response):
# some treatment
# a loop
     request = scrapy.Request(url=<calculated_url>, callback=parseCategory)
     request.meta['item'] = my_item_dict.copy()
     # print request.meta['item'] is good and different in every iteration
     yield request

相关问题 更多 >

    热门问题