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

如何使用Python BeautifulSoup为标签组包裹外层元素标签?

使用BeautifulSoup为标签组包裹外层div标签

完全可以实现这个需求,核心思路是定位每个<h1>标签,将其和后续的兄弟<p>标签一同包裹到新创建的<div>中。以下是具体的实现代码:

from bs4 import BeautifulSoup

# 原始HTML内容
html_content = """
<h1>Heading for Sec 1</h1>
    <p>some text sec 1</p>
    <p>some text sec 1</p>
    <p>some text sec 1</p>

<h1>Heading for Sec 2</h1>
    <p>some text sec 2</p>
    <p>some text sec 2</p>
    <p>some text sec 2</p>

<h1>Heading for Sec 3</h1>
    <p>some text sec 3</p>
    <p>some text sec 3</p>
"""

# 解析HTML
soup = BeautifulSoup(html_content, 'html.parser')

# 获取所有h1标签
h1_list = soup.find_all('h1')

for h1 in h1_list:
    # 创建新的div容器
    div_container = soup.new_tag('div')
    # 先把当前h1标签包裹进div
    h1.wrap(div_container)
    
    # 遍历h1的后续兄弟节点
    next_node = h1.next_sibling
    while next_node is not None:
        # 遇到下一个h1就停止遍历
        if next_node.name == 'h1':
            break
        # 只处理p标签(如果有其他需要包含的标签,可在此扩展判断)
        if next_node.name == 'p':
            # 将p标签从原来的位置移到div里
            div_container.append(next_node.extract())
        # 移动到下一个兄弟节点
        next_node = next_node.next_sibling

# 输出处理后的HTML
print(soup.prettify())

代码逻辑说明

  1. 解析HTML:用BeautifulSoup加载原始HTML内容,生成可操作的DOM树。
  2. 定位h1标签:找到所有需要作为分组起点的<h1>标签。
  3. 创建包裹容器:为每个<h1>创建对应的<div>,并将<h1>包裹进去。
  4. 收集后续兄弟节点:遍历<h1>之后的兄弟节点,把所有<p>标签移动到<div>中,直到遇到下一个<h1>为止。
  5. 输出结果:通过prettify()方法格式化输出处理后的HTML,结构与你期望的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:45:42