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

如何用Beautiful Soup获取指定TD后的目标span文本?

使用Beautiful Soup根据指定TD内容获取目标Span文本

步骤说明与代码示例

假设你已经有了目标HTML内容,以下是具体实现方法:

  1. 导入BeautifulSoup并解析HTML
from bs4 import BeautifulSoup

# 你的目标HTML内容
html = '''
<tr class="even">
<td>**keyword** </td>
<td class="separator"></td>
<td>
<span title="blablabla" class="data-siloing">**Text I want**</span> </td>
</tr>
'''

# 解析HTML
soup = BeautifulSoup(html, 'html.parser')
  1. 定位包含指定内容的TD标签
    用带lambda的find方法匹配TD,避免因文本前后空格导致匹配失败:
# 匹配内容包含**keyword**的TD
target_td = soup.find('td', string=lambda text: text and '**keyword**' in text.strip())
  1. 获取后续TD中的目标Span文本

方法一:鲁棒性更强(适配结构可能变化的情况)

遍历目标TD的后续兄弟节点,跳过空白节点后找到包含指定class的span:

if target_td:
    for sibling in target_td.next_siblings:
        # 只处理<td>标签节点,跳过换行、空格等空白节点
        if sibling.name == 'td':
            target_span = sibling.find('span', class_='data-siloing')
            if target_span:
                # 输出去除前后空格的文本
                print(target_span.get_text(strip=True))
                break

方法二:高效简洁(适用于HTML结构固定的情况)

如果确定目标TD后隔一个separator TD就是目标TD,可以直接通过find_next_sibling定位:

if target_td:
    # 跳过中间的separator TD,定位到下一个TD
    target_content_td = target_td.find_next_sibling('td').find_next_sibling('td')
    target_span = target_content_td.find('span', class_='data-siloing')
    if target_span:
        print(target_span.get_text(strip=True))

关键注意点

  • 匹配TD文本时,一定要处理前后空格,否则可能因文本带空格导致匹配失败。
  • 遍历兄弟节点时,要过滤掉非标签类型的空白节点(比如换行符、空格)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:25:26