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

如何用Python/BeautifulSoup从Span标签获取同级<td>标签文本

问题解决:获取指定span所在td的同级td文本

你的代码存在两个核心问题:

  1. 定位方向错误:find_next_siblings('td')是在<span>的同级元素中查找,但<span>嵌套在<td>内部,它的同级没有任何<td>,必须先定位到<span>所在的父级<td>,再去查找这个<td>的同级元素。
  2. 结果集处理错误:find_next_siblings返回的是多个元素的集合(列表),不能直接调用.text,需要遍历每个元素提取文本。

正确实现代码

import requests
from bs4 import BeautifulSoup

# 假设html是你获取到的目标HTML内容
html = """
<tr>
   <td>
      <span>EPS Actual</span>
   </td>
   <td>1.1</td>
   <td>2.2</td>
   <td>3.3</td>
   <td>4.4</td>
</tr>
"""

soup = BeautifulSoup(html, 'lxml')
# 1. 找到目标span
target_span = soup.find('span', text='EPS Actual')
# 2. 获取span所在的父td
parent_td = target_span.parent
# 3. 获取该td的所有同级后续td标签
sibling_tds = parent_td.find_next_siblings('td')
# 4. 遍历提取每个td的文本,整理成列表
eps_values = [td.get_text(strip=True) for td in sibling_tds]

print(eps_values)  # 输出: ['1.1', '2.2', '3.3', '4.4']

简化写法

也可以把步骤合并成一行:

eps_values = [td.get_text(strip=True) for td in soup.find('span', text='EPS Actual').parent.find_next_siblings('td')]

说明:get_text(strip=True)会自动去除文本前后的空白字符,避免换行、空格干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:31:14