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

Selenium通过Xpath抓取球员薪资数据时返回空值的原因咨询

问题原因与解决思路

空值产生的核心原因

  • 异步渲染延迟:Selenium执行find_elements时,页面初始DOM已加载,但Hoopshype的球员数据是异步加载的——开头的<td class="name">下的<a>标签先被创建,对应文本还没填充完成,所以p.text返回空字符串。
  • 隐藏的空元素:页面中存在一些不可见的(比如CSS设置display:none)<td class="name">元素,内部的<a>标签没有文本内容。浏览器开发者工具默认不会显示隐藏元素,所以你在Chromium里检查XPath看不到这些空元素,但Selenium会抓取所有匹配XPath的元素,无论是否可见。

针对性解决办法

1. 等待元素完全渲染后抓取

使用WebDriverWait等待目标元素可见,确保文本已经加载完成:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 替换原代码中players的抓取逻辑
wait = WebDriverWait(driver, 10)
# 只抓取有非空文本的<a>标签
players = wait.until(EC.visibility_of_all_elements_located((By.XPATH, '//td[@class="name"]/a[text()!=""]')))

2. 过滤空文本元素

如果不想修改等待逻辑,可以直接在生成列表时过滤掉空值:

players_list = [p.text.strip() for p in players if p.text.strip()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:14:59