访问嵌套调用内部的收益值

2024-10-01 15:36:07 发布

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

假设有以下方法调用:

parse() -> parseProductPage() -> parseUser()     (indirectly?) -> process_item()
                              -> parseCategory() (indirectly?) -> process_item()
                              -> parseProduct()  (indirectly?) -> process_item()

进程\u item()属于某个管道类,负责将每个项目插入数据库并返回相应的ID(由MongoDB动态生成,插入前不存在)。所有其他方法都属于spider类并递归地产生。你知道吗

现在我想要的是在返回的过程中访问每个ID,但问题是生成的值只能由初始调用方(父调用方?parse()的)。你知道吗

由于process\u item()可以访问调用spider,解决这个问题的一种方法是将这些id中的每一个都写入相应的成员变量,但在我看来,这似乎是一个糟糕的设计体系结构,很多事情可能会出错。有别的选择吗?你知道吗

@Edit我想我可以把建立关系的逻辑转移到管道上,但真的是这样吗?你知道吗


Tags: 项目方法id数据库管道进程parseitem
1条回答
网友
1楼 · 发布于 2024-10-01 15:36:07

如果parseProduct需要来自parseUser或其他方面的输入,您必须使您的MongoDB客户端成为spider的一部分,这需要一些Twisted知识,并且可能需要一个基于Twisted的MongoDB客户端,以便在MongoDB请求期间不阻止Scrapy。你知道吗

或者,简单地用原始数据生成一个输出文件并编写一个单独的脚本来解析该文件并根据需要将数据发送到MongoDB可能更容易。你知道吗

相关问题 更多 >

    热门问题