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

如何使用BeautifulSoup提取表格中球员伤病及日期信息?

爬取球员伤病数据的解决方案

核心思路

  1. 过滤掉带有COLLAPSE类的空<tr>元素,只保留包含球员数据的有效行
  2. 从每个有效行中定位第3个<td>(目标数据固定所在位置)
  3. 提取该<td>内的伤病名称和日期文本,清理无关字符后整理成目标列表

实现代码(基于BeautifulSoup)

from bs4 import BeautifulSoup

# 替换为实际爬取到的HTML内容
html = """
<tbody>
    <tr>
        <td>
            <a href="LINK">Player1</a>
        </td>
        <td>Position1</td>
        <td>
            <b>Player1 Injury</b>
            <br>
            "Date of injury1"
        </td>
        <td>
            <a href="LINK" class="BUTTON"></a>
        </td>
    </tr>
    <tr class="COLLAPSE"></tr>
    <tr>
        <td>
            <a href="LINK">Player2</a>
        </td>
        <td>Position2</td>
        <td>
            <b>Player2 Injury</b>
            <br>
            "Date of injury2"
        </td>
        <td>
            <a href="LINK" class="BUTTON"></a>
        </td>
    </tr>
    <tr class="COLLAPSE"></tr>
</tbody>
"""

soup = BeautifulSoup(html, 'html.parser')

# 筛选不含COLLAPSE类的有效tr
valid_rows = soup.find_all('tr', class_=lambda c: c != 'COLLAPSE')

injury_data = []
for row in valid_rows:
    # 获取第3个td(索引从0开始,对应第3个位置)
    target_td = row.find_all('td')[2]
    # 提取并清理文本:去除空格和多余引号
    clean_texts = [t.strip().strip('"') for t in target_td.stripped_strings]
    injury_data.extend(clean_texts)

print(injury_data)

代码说明

  • class_=lambda c: c != 'COLLAPSE':精准过滤掉无用的折叠行,只保留有数据的行
  • target_td.stripped_strings:自动提取<td>内所有非空文本片段,无需手动处理<br>标签
  • 文本清理步骤:去除首尾空格和包裹日期的引号,确保结果格式符合要求

运行代码后将输出:

['Player1 Injury', 'Date of injury1', 'Player2 Injury', 'Date of injury2']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:25:36