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

如何使用Python从多特蒙德赛事HTML页面提取“TSV SCHOTT Mainz”?

多特蒙德赛事页面对手名称提取方案

你当前代码的核心问题有两个:

  • 错误地尝试从<img>标签提取文本内容,但对手名称实际存在于img的alt属性中
  • 页面元素的选择器(表格、行的class)可能和当前页面结构不匹配

以下是修正后的可运行代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.bvb.de/Spiele/Alle-Spiele"

response = requests.get(url)
if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")
    # 定位赛事数据表格
    game_table = soup.find("table", class_="statistics statistics--matches")
    if game_table:
        # 遍历每一行赛事记录
        for row in game_table.find_all("tr", class_="statistics__row"):
            # 找到存放对手信息的单元格
            opponent_cell = row.find("td", class_="statistics__cell--opponent")
            if opponent_cell:
                # 从img标签的alt属性提取对手名称
                opponent_logo = opponent_cell.find("img")
                if opponent_logo:
                    opponent_name = opponent_logo.get("alt", "").strip()
                    if opponent_name == "TSV SCHOTT Mainz":
                        print(f"成功提取目标对手:{opponent_name}")

关键说明:

  • 选择器适配:原代码用的statistics statistics-matchday已不再是当前页面表格的class,改用实际生效的statistics statistics--matches
  • 属性提取:<img>标签的文本内容为空,对手名称是通过alt属性存储的,所以要用.get("alt")方法获取
  • 定位逻辑优化:先锁定对手信息所在的单元格,再从中提取图片元素,能有效避免无关元素干扰

如果后续页面结构变动,你可以通过浏览器F12开发者工具查看目标元素的最新属性:右键点击目标对手名称,选择「检查」,在Elements面板中确认节点的层级、class等信息,再调整代码中的选择器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:13:34