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

使用Selenium获取亚马逊商品价格子元素的问题

问题分析与解决方案

你的XPath写法存在两个关键错误:

  • div的class属性值未闭合双引号,直接导致XPath语法失效;
  • div节点与span节点的路径拼接逻辑错误,原代码中未闭合div的class就拼接//span,完全不符合XPath语法规范。

正确的XPath写法

直接修正语法问题,闭合div的class引号,确保路径层级正确:

totalPrices = driver.find_elements(By.XPATH, "//div[@class='sg-col-4-of-24 sg-col-4-of-12 s-result-item s-asin sg-col-4-of-16 sg-col s-widget-spacing-small sg-col-4-of-20']//span[@class='a-price-whole']")

更健壮的定位方案

亚马逊商品div的完整class可能随页面更新动态变化,依赖完整class定位容易失效。推荐用更稳定的核心特征定位,比如结合s-result-item和s-asin这两个固定类:

totalPrices = driver.find_elements(By.XPATH, "//div[contains(@class, 's-result-item') and contains(@class, 's-asin')]//span[@class='a-price-whole']")

反爬与元素加载注意

亚马逊有反爬机制,直接调用find_elements可能因元素未加载完成导致找不到。建议使用显式等待确保元素加载完成:

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

# 等待10秒,直到所有目标元素出现
wait = WebDriverWait(driver, 10)
totalPrices = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[contains(@class, 's-result-item') and contains(@class, 's-asin')]//span[@class='a-price-whole']")))

内容的提问来源于stack exchange,提问作者Jesús Navarro Hernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:13