You need to enable JavaScript to run this app. 使用BeautifulSoup抓取同类元素:Flashscore比赛统计数据抓取问题
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup抓取同类元素:Flashscore比赛统计数据抓取问题

Flashscore比赛统计数据抓取修正方案

原代码问题梳理

  • 语法错误:第三行误用未定义的_ap变量调用find方法,不存在的变量会直接抛出运行异常
  • 定位逻辑错误:用text='Ball Possession'匹配到的是统计项名称的独立子元素,该元素本身不包含主客场控球率的数值节点,需要先向上定位到当前统计项的整行父容器,再从父容器中查找数值节点
  • 匹配规则鲁棒性不足:全字匹配文本容易受页面空白字符、前后隐藏符号的影响,导致匹配失败

修正后可运行代码

import re
# 先匹配包含Ball Possession文本的元素,再向上找统计行的父容器
_bp_item = soup.find('div', string=re.compile('Ball Possession'))
# 向上查找最近的整行统计容器,可根据实际页面结构调整匹配的类名规则
_stat_row = _bp_item.find_parent('div', class_=re.compile('statRow'))
# 从整行容器中分别查找主客场数值
_hp = _stat_row.find('div', class_=re.compile('homeValue')).text.strip()
_ap = _stat_row.find('div', class_=re.compile('awayValue')).text.strip()

可选优化点

  • 如果页面类名是动态生成的,可以通过相邻节点、元素顺序定位数值,不需要依赖类名
  • 若页面是异步渲染的数据,需要先通过接口请求获取数据,或者用Selenium等工具等待页面渲染完成再解析,否则soup获取不到对应元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:36:03