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

如何使用Python实现嵌套HTML列表的解析转换

你原有代码的问题是find_all('li')会递归匹配所有层级的<li>标签,无法区分嵌套深度,自然没法生成对应数量的加号前缀。你可以用递归函数逐层处理<ul>标签,每深入一层嵌套就把层级计数加1,对应加号的数量和层级数保持一致即可。

完整可运行代码如下:

import bs4

def parse_list(ul_node, level=1):
    res = []
    # 只遍历当前ul的直接子节点,不递归深层节点
    for child in ul_node.children:
        if not isinstance(child, bs4.element.Tag):
            continue
        if child.name == "li":
            res.append(f"{'+'*level} {child.get_text(strip=True)}")
        elif child.name == "ul":
            # 嵌套ul,层级+1递归处理
            res.extend(parse_list(child, level+1))
    return res

# 你的HTML代码存储在变量x中
soup = bs4.BeautifulSoup(x, "html.parser")
root_ul = soup.find("ul")
output = "\n".join(parse_list(root_ul))
print(output)

运行上述代码输出的结果和你要求的预期效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:03