You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用递归重构嵌套循环的Python分类树解析函数?

递归重构分类树解析代码方案

你可以把重复的节点处理逻辑抽成递归函数,彻底消除嵌套循环的冗余。核心思路是:每一层分类节点的处理逻辑完全一致——提取当前分类的标题和链接,然后递归处理它的子节点,把结果挂载到childs列表中。

重构后的代码

首先在类中添加一个递归辅助方法:

def _parse_category_node(self, node):
    # 提取当前节点的标题与链接
    category_a = node.xpath("./a")
    title = category_a.xpath("./*[1]/text()").get()
    url = self._host + category_a.xpath("./@href").get()

    # 初始化当前分类对象
    category = {
        "title": title,
        "url": url,
        "childs": [],
    }

    # 获取当前节点的所有子节点行,递归处理每个子节点
    child_nodes = node.xpath("./div/div")
    for child_node in child_nodes:
        category["childs"].append(self._parse_category_node(child_node))

    return category

然后主解析逻辑可以简化成:

for container in category_containers:
    yield self._parse_category_node(container)

重构优势

  1. 消除冗余代码:原代码中重复的节点提取、对象初始化逻辑被完全复用,不再需要多层嵌套循环
  2. 扩展性更强:不管分类树有多少层级(原代码写死了4层),递归都会自动处理,后续新增层级不需要修改代码
  3. 逻辑更清晰:每个函数只负责处理单个节点的逻辑,职责单一,更容易维护和调试

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:48:26