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

如何用Python BeautifulSoup提取两个同级h2标签间的HTML内容

HTML按h2标签拆分数据集方案

最稳妥的实现方式是使用HTML DOM解析库直接遍历节点分组,完全不依赖标签内的文本内容匹配,从根源避免h2内容和p标签内容重复导致的拆分错误。

Python实现示例(基于BeautifulSoup)

依赖安装

执行命令安装所需库:

pip install beautifulsoup4 lxml

完整代码

from bs4 import BeautifulSoup

# 替换为你爬虫获取的原始HTML文本
raw_html = """
<h2> header one </h2> 
<p> some text </p>
<p> some more text </p>
<h2> header two </h2>
<p> text for header two </p>
<p> more text for header two </p>
<h2> header three </h2>
<p> text for header three </p>
"""

# 初始化解析器
soup = BeautifulSoup(raw_html, 'lxml')
groups = []
current_group = []

# 遍历所有直接子节点
for node in soup.body.children:
    # 跳过空白换行等无效节点
    if node.name is None:
        continue
    # 遇到h2标签就创建新分组
    if node.name == 'h2':
        if current_group:
            groups.append(current_group)
        current_group = [node]
    # p标签直接加入当前分组
    else:
        current_group.append(node)
# 存入最后一个分组
if current_group:
    groups.append(current_group)

# 输出拆分后的数据集
for index, group in enumerate(groups, 1):
    print(f"数据集{index}:")
    group_html = '\n'.join([str(tag) for tag in group])
    print(group_html)
    print("="*30)

逻辑说明

  • 解析器会自动识别HTML标签类型,完全不需要匹配标签内的文本内容,不管h2和p的文本有没有重复都不会拆分错误
  • 你如果用其他语言开发,也可以用对应生态的HTML解析库实现相同逻辑:JS用Cheerio、Java用Jsoup、Go用goquery,核心逻辑都是遍历节点、遇到h2就分割分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:08