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

使用Beautiful Soup提取赛事HTML信息遇阻,寻求技术协助

问题修正方案

你的代码主要存在三个核心问题:

  • select方法用法错误:该方法仅接受CSS选择器字符串,不能像find那样拆分参数传参
  • 目标元素定位错误:日期、时间是span.venuetime标签的自定义属性,并非div的class;场地对应的class名你写错了(原HTML里不存在match_stadium)
  • 属性提取逻辑缺失:你要的日期、时间是标签的属性值,不是标签本身的文本内容

修正后的代码如下:

import requests
from bs4 import BeautifulSoup

url = "https://fbref.com/en/matches/e62685d4/Manchester-United-Leeds-United-August-14-2021-Premier-League"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")
scorebox = soup.find("div", class_="scorebox_meta")

# 提取日期:从venuetime类的span标签中获取data-venue-date属性
venuetime_span = scorebox.find("span", class_="venuetime")
date = venuetime_span["data-venue-date"]
# 提取时间:从同一个span标签中获取data-venue-time属性
time = venuetime_span["data-venue-time"]
# 提取场地:匹配包含"Venue"的div,再获取其后的small标签文本
venue = scorebox.find("div", string=lambda text: "Venue" in text.strip()).find_next("small").text.strip()

print("Date:", date)
print("Time:", time)
print("Venue:", venue)

关键说明:

  • 定位到venuetime类的span标签后,直接通过字典索引方式获取自定义属性值(如['data-venue-date']),如果担心属性不存在导致报错,可改用get方法,比如venuetime_span.get("data-venue-date", "未知日期")
  • 场地提取用lambda表达式匹配包含"Venue"的div,再找相邻的small标签,比硬写DOM结构更健壮,适配页面小范围结构变更

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:01:11