gpt4 book ai didi

python - scrapy中通过回调函数传递元元素

转载 作者:行者123 更新时间:2023-12-01 05:08:24 25 4
gpt4 key购买 nike

当我通过回调函数传递元素时,就像在官方 scrapy 文档中找到的示例一样。

我想知道在上述函数内修改后传递给 parse_page2 的元素 item 是否可以在 parge_page1 函数中检索修改。

我的意思是假设下面的例子。在 parse_page2 函数中,我们将 response.url 添加到“other_url”字段中。

parse_page2 执行完成后,是否存在一种方法可以在 parse_page1 中获取“other_url”?

def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request

def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item

最佳答案

您可以简单地在元字典中传递response.url,然后在parse_page2函数中创建项目,而不是在parse_page1函数中创建项目。

def parse_page1(self, response):
return Request(url="http://www.example.com/some_page.html",
meta={'main_url':reponse.url},
callback=self.parse_page2)

def parse_page2(self, response):
item = MyItem()
item['main_url'] = response.meta['main_url']
item['other_url'] = response.url
return item

或者,如果您确实想从 parse_page2 返回信息,您可以回调 parse_page1,并在函数中添加条件:

def parse_page1(self, response):
if "other_url" in response.meta:
do something
else:
do something else

关于python - scrapy中通过回调函数传递元元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com