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

如何用Python修改HTML导航菜单指定标签且不破坏其余内容

用BeautifulSoup实现导航菜单当前页高亮(移除链接+加粗)

直接用BeautifulSoup可以轻松修改指定DOM元素,完全保留原有HTML结构,以下是具体实现方案:

完整实现代码

from bs4 import BeautifulSoup

# 原始导航菜单HTML
menu_html = """
<ul>
    <li><a href="/">Home</a></li>
    <li><a href="/products.html">Products</a></li>
    <li><a href="/about.html">About</a></li>
</ul>
"""

def update_active_menu(menu_html, current_path):
    # 解析HTML为可操作的DOM对象
    soup = BeautifulSoup(menu_html, 'html.parser')
    # 遍历所有菜单项的链接标签
    for a_tag in soup.find_all('a'):
        # 匹配当前页面的路径
        if a_tag['href'] == current_path:
            # 创建粗体标签并填充原链接文本
            bold_tag = soup.new_tag('b')
            bold_tag.string = a_tag.string
            # 用粗体标签替换原链接所在的li内容
            a_tag.parent.clear()
            a_tag.parent.append(bold_tag)
            # 找到匹配项后退出循环,避免重复处理
            break
    # 返回修改后的HTML字符串
    return str(soup)

# 示例:当前页面为Products页
updated_menu = update_active_menu(menu_html, '/products.html')
print(updated_menu)

代码说明

  • HTML解析:通过BeautifulSoup将原始HTML转为DOM对象,自动保留原有的缩进和结构
  • 匹配当前页:遍历所有<a>标签,对比href属性与传入的当前页面路径
  • 元素替换:找到匹配的链接后,清空其父元素<li>的内容,再插入包裹了原文本的<b>标签,彻底移除原链接
  • 结果输出:将修改后的DOM对象转回字符串,得到结构完整的更新后菜单

运行结果

执行代码后输出的HTML如下:

<ul>
    <li><a href="/">Home</a></li>
    <li><b>Products</b></li>
    <li><a href="/about.html">About</a></li>
</ul>

如果需要更快的解析速度或更好的复杂自动接入(**CLIT)设计 heuristicwing口BB上,可以安装lxml库,将解析器参数替换为'lxml'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:23