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

使用Beautiful Soup获取指定span后续元素失败,求解决方案

问题分析与解决方法

问题原因

你调用find("span", string="Diesen Monat:").next_sibling拿不到目标<span class="parValue">,核心原因是:两个span之间的空格、换行等空白字符属于独立的文本节点,next_sibling会优先返回这个文本节点,而非你需要的元素节点。

可行解决方法

以下几种方式都能准确获取目标值:

方法1:用find_next()直接定位下一个span元素

跳过中间的空白文本,直接查找后续第一个符合条件的span元素:

target_span = soup.find("span", string="Diesen Monat:").find_next("span", class_="parValue")
print(target_span.get_text())  # 输出:67.54 kWh

方法2:遍历next_siblings筛选元素节点

遍历所有后续兄弟节点,过滤出元素类型的节点:

par_name_span = soup.find("span", string="Diesen Monat:")
for sibling in par_name_span.next_siblings:
    if sibling.name == "span":
        print(sibling.get_text())  # 输出:67.54 kWh
        break

方法3:使用CSS相邻兄弟选择器

用+选择器直接选中目标元素(需Beautiful Soup 4.7.0及以上版本支持:contains()伪类):

target_span = soup.select_one('span:contains("Diesen Monat:") + span.parValue')
print(target_span.get_text())

如果你的Beautiful Soup版本较低,可先定位到parName元素再用相邻选择器:

par_name_span = soup.find("span", string="Diesen Monat:")
target_span = par_name_span.find_next_sibling("span", class_="parValue")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:40