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

Selenium Python使用CSS_SELECTOR获取元素异常:仅返回3条而非50条

问题分析与解决方案

核心问题排查

  1. 动态加载等待不充分:time.sleep(1)的硬等待时间不足以让页面加载完所有50个商品元素,导致仅捕获到已加载的3个。
  2. 冗余的子元素选择逻辑:循环中通过父元素再次查找.elements-title-normal.one-line完全多余——父元素本身就是.elements-title-normal,子元素不会重复携带该类名,这会额外增加出错概率。
  3. 选择器匹配范围偏差:需确认.elements-title-normal是否是所有商品标题的通用类,部分商品可能使用了变体类(比如.elements-title-normal.two-line),导致选择器漏选。

修正后的代码

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

# 用显式等待替代硬等待,确保所有目标元素加载完成
product_names = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".elements-title-normal"))
)

list1 = []
for item in product_names:
    # 直接获取当前元素文本,无需嵌套查找
    list1.append(item.text)
    # 可选:若有反爬限制,保留极短等待,优先用显式等待替代硬等待
    # time.sleep(0.1)

print(f"捕获到的元素数量:{len(list1)}")
print(list1)

额外验证步骤

  • 打开浏览器开发者工具(F12),在控制台执行document.querySelectorAll(".elements-title-normal").length,确认返回值是否为50。若不是,说明选择器需调整,比如检查是否有父容器限制、类名拼写错误。
  • 如果控制台返回50但代码仍拿不到,检查元素是否在iframe内,若存在需先切换到对应iframe再执行查找。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:22:38