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

如何用BeautifulSoup将带aria-level的div替换为对应层级h标签并清除多余属性

优化后实现代码

你可以一次查询所有符合要求的标题类div,动态生成对应层级的h标签,同时直接清空元素的所有属性即可:

import bs4

html = '''<div id="container">
    <div role="heading" aria-level="1">The main page heading</div>
    <p>This article is about showing a page structure.</p>
    <div role="heading" aria-level="2">Introduction</div>
    <p>An introductory text.</p>
    <div role="heading" aria-level="2">Chapter 1</div>
    <p>Text</p>
    <div role="heading" aria-level="3">Chapter 1.1</div>
    <p>More text in a sub section.</p>
    </div>'''

soup = bs4.BeautifulSoup(html, "html.parser")

# 一次查询所有带aria-level属性、role为heading的div
for header_div in soup.find_all("div", {"role": "heading", "aria-level": True}):
    # 获取标题层级
    level = header_div["aria-level"]
    # 替换标签名
    header_div.name = f"h{level}"
    # 清空所有原有属性
    header_div.attrs = {}

print(soup)

实现说明

  • 没有写死固定的h1/h2/h3三层查询,不管是h4还是更高层级的标题都能自动适配,代码更简洁灵活
  • BeautifulSoup元素的attrs属性存储了该标签的所有属性,直接赋值为空字典即可一次性清除所有冗余属性,无需逐个删除
  • 额外增加了role="heading"的匹配条件,避免误改其他带aria-level属性的非标题div

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:15:01