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

使用find_elements_by_xpath获取常规赛场次时长度异常求助

问题原因分析

1. 全局XPath返回过多结果的原因

使用//tbody/tr[@id and @data-row]时,会匹配页面中所有表格的符合条件的行,而非仅目标常规赛比赛日志表格(pgl_basic)。Basketball Reference页面里除了常规赛日志,还包含季前赛、全明星赛等其他模块的表格行,这些行的DOM结构同样满足@id和@data-row的筛选条件,最终导致统计结果远超常规赛实际场次。

2. 精确XPath返回0结果的原因

主要是以下两种情况导致:

  • 页面未完全加载:Selenium执行元素查找时,目标表格的DOM还未通过JavaScript渲染完毕。该网站的表格数据是动态加载的,若未等待页面渲染完成就执行查找,会无法定位到元素。
  • 表格数据被隐藏在HTML注释中:这类体育数据网站常将原始表格内容放在HTML注释(<!-- ... -->)内,再通过前端JS解析为可视的DOM结构。直接用XPath查找时,Selenium无法识别注释内的元素,自然返回空结果。

解决建议

  • 针对结果过多问题:始终限定目标表格ID,确保仅查找table[@id="pgl_basic"]下的行。
  • 针对找不到元素问题:
    1. 显式等待表格加载完成,使用WebDriverWait等待目标元素出现:
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      total_games = WebDriverWait(driver, 10).until(
          EC.presence_of_all_elements_located((By.XPATH, '//table[@id="pgl_basic"]/tbody/tr[@id and @data-row]'))
      )
      
    2. 若等待后仍无结果,可尝试解析页面中的HTML注释提取数据(优先推荐等待JS渲染的方式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:50:08