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

Selenium通过XPath查找元素仅前15个非空其余为空,如何获取全部元素?

问题原因

Shopee平台采用虚拟滚动(懒加载)的页面渲染逻辑:所有商品的DOM节点会提前挂载到页面中,因此你获取的product_list长度和实际商品数量一致,但只有进入浏览器可视区域的商品节点才会被注入实际的文本、图片等内容,未出现在视口的节点内容默认为空,因此只有首屏的前15个商品可以拿到非空文本。

解决方法

需要先模拟页面滚动,触发所有商品节点的内容渲染,再统一提取商品文本:

  • 先通过JS脚本模拟页面逐段滚动到底部,每次滚动后预留足够时间等待商品内容加载
  • 待所有商品都完成渲染后,再遍历product_list提取文本内容
修改后的完整代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 路径前加r避免转义字符报错
chromeDriverPath = r'C:\Program Files (x86)\chromedriver.exe'
url = 'https://shopee.vn/Th%E1%BB%9Di-Trang-Nam-cat.11035567?page=0'
driver = webdriver.Chrome(executable_path=chromeDriverPath)
driver.get(url)

try:
    main_xpath = '/html/body/div[1]/div/div[3]/div/div[4]/div[2]/div/div[2]'
    main = WebDriverWait(driver,20).until(
        EC.presence_of_element_located((By.XPATH,main_xpath))
    )
    product_list = main.find_elements(By.XPATH,'./div[@data-sqe="item"]')

    # 模拟滚动到底部,触发所有商品渲染
    last_height = driver.execute_script("return document.body.scrollHeight")
    while True:
        # 滚动到页面底部
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        # 等待2秒让商品内容加载完成,可根据网络情况调整时长
        time.sleep(2)
        new_height = driver.execute_script("return document.body.scrollHeight")
        # 滚动到最底部没有高度变化时,终止滚动
        if new_height == last_height:
            break
        last_height = new_height

    # 所有商品渲染完成后再提取文本
    for i in range(0,len(product_list)):
        print(i)
        print(product_list[i].text)
finally:
    driver.close()
可选优化

如果滚动后还是有部分内容为空,可以改为逐个滚动到每个商品节点再提取内容,确保每个节点都被触发渲染:

for i in range(0,len(product_list)):
    # 滚动到当前商品节点
    driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", product_list[i])
    time.sleep(0.5)
    print(i)
    print(product_list[i].text)

内容的提问来源于stack exchange,提问作者Ngọc An

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:06:06