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

使用BeautifulSoup和Flask筛选NFL伤病数据指定列并格式化显示

解决方案

1. 精准筛选表格元素,提取目标字段

用BeautifulSoup定位伤病表格的行与列,跳过表头后直接提取队名、球员名、位置、伤病这四个核心字段,再拼接成你需要的格式。示例代码如下:

from flask import Flask, render_template_string
import requests
from bs4 import BeautifulSoup

app = Flask(__name__)

@app.route('/')
def show_injuries():
    # 目标页面地址
    url = "https://www.cbssports.com/nfl/injuries/"
    # 模拟浏览器请求,避免反爬拦截
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 定位伤病表格的所有数据行(跳过表头行)
    injury_rows = soup.select('table.TableBase-table tr')[1:]
    n = 10  # 自定义展示最近n条数据
    recent_injuries = []
    
    for row in injury_rows[:n]:
        tds = row.find_all('td')
        # 确保当前行有足够列数,避免索引越界
        if len(tds) >= 4:
            # 根据页面实际列顺序提取字段,若页面更新需调整索引
            team = tds[0].get_text(strip=True)
            player = tds[1].get_text(strip=True)
            position = tds[2].get_text(strip=True)
            injury = tds[3].get_text(strip=True)
            # 拼接成指定格式
            formatted_line = f"{team} {player} {position} {injury}"
            recent_injuries.append(formatted_line)
    
    # 用简单的HTML列表展示结果,避免DataFrame转HTML的格式冲突
    return render_template_string('''
        <h2>最近NFL伤病数据</h2>
        <ul>
            {% for line in injuries %}
                <li>{{ line }}</li>
            {% endfor %}
        </ul>
    ''', injuries=recent_injuries)

if __name__ == '__main__':
    app.run(debug=True)

2. 关键注意事项

  • 列索引调整:如果提取的字段不对,打开CBS伤病页检查元素,打印每行所有td的文本内容,确认队名、球员等字段对应的索引位置:
    for td in tds:
        print(td.get_text(strip=True))
    
  • 替代DataFrame方案:之前用DataFrame展示出错,是因为默认的to_html()生成的表格样式容易和Flask模板冲突,直接提取字段拼接成纯文本格式更稳定。
  • 反爬应对:如果请求被拦截,补充Referer等请求头字段,或添加请求间隔(time.sleep(1))。

内容的提问来源于stack exchange,提问作者J. Rumpelstiltskin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:10:26