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

如何使用BeautifulSoup精准定位带ac:name="gliffy"的自定义HTML标签

解决方案

工具选择

不需要更换库,BeautifulSoup原生支持带命名空间的非标准标签、属性查询,使用内置的html.parser或者lxml解析器均可正常工作。

精准定位实现

你只需要在查询时将带命名空间的属性通过字典参数传入,即可过滤出符合ac:name="gliffy"条件的宏标签,完全排除其他类型宏的干扰。

完整代码示例

from bs4 import BeautifulSoup

# 替换为你实际获取的Confluence页面源码
page_html = """
<p>Lorem ipsum dolor sit amet</p>
<p>Figure: Consectetur adipiscing elit</p>
<p>
   <ac:structured-macro ac:macro-id="a9ab423b-b68c-4836-bffa-cdf1c5b95392" ac:name="gliffy" ac:schema-version="1">
      <ac:parameter ac:name="displayName">Sed do eiusmod</ac:parameter>
      <ac:parameter ac:name="name">Tempor incididunt ut</ac:parameter>
      <ac:parameter ac:name="pagePin">2</ac:parameter>
   </ac:structured-macro>
</p>
<p><br/></p>
"""

# 解析页面
soup = BeautifulSoup(page_html, "html.parser")

# 精准匹配所有gliffy宏标签
gliffy_list = soup.find_all("ac:structured-macro", {"ac:name": "gliffy"})

# 后续可对匹配到的宏做进一步操作,例如提取宏ID、内部参数
for gliffy in gliffy_list:
    # 打印宏ID
    print("宏ID:", gliffy.get("ac:macro-id"))
    # 提取displayName参数值
    display_name = gliffy.find("ac:parameter", {"ac:name": "displayName"}).text
    print("图表名称:", display_name)

补充说明

如果你更习惯使用XPath语法,也可以切换到lxml库实现同样的效果,对应查询语句为//ac:structured-macro[@ac:name='gliffy'],无需做额外的命名空间声明即可直接查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:39:00