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

如何用BeautifulSoup收集两个<h2>标签间的兄弟节点内容?

解决BeautifulSoup收集

后续内容的问题

你的代码核心问题是在内层遍历兄弟节点时,每拼接一个元素就往列表里添加一次数据,导致同一个章节被重复存入多次,且每次的text是累积的片段而非完整内容。

修正后的代码会先把当前

到下一个

之间的所有内容拼接完成,再一次性存入列表,确保每个章节对应一条完整数据:

from bs4 import BeautifulSoup
import pandas as pd

chapter_data = []

for e in soup.select('h2'):
    chapter_content = ''
    # 遍历当前h2的所有后续兄弟节点
    for sib in e.next_siblings:
        # 遇到下一个h2就停止遍历
        if sib.name == 'h2':
            break
        # 拼接节点内容(若要过滤空白文本,可加判断:if str(sib).strip())
        chapter_content += str(sib)
    # 收集完当前章节所有内容后,再存入列表
    chapter_data.append({
        'chapter': e.get_text(strip=True).split()[-1],
        'text': chapter_content.strip()  # 可选:清理首尾空白
    })

chapters = pd.DataFrame(chapter_data)

关键修改点:

  • 将chapter_data.append()从内层循环移到外层循环,确保每个

    仅生成一条数据

  • 可选添加.strip()清理内容首尾的空白字符,避免多余的换行或空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:20:22