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

如何用Python/Selenium获取亚马逊商品星级?代码尝试失败求助

解决Python/Selenium获取亚马逊商品星级失败的问题

我尝试用Python/Selenium获取亚马逊商品页面(https://www.amazon.com/dp/B09VDD8D8R)的星级,期望结果为“4.1 out of 5 stars”,但现有代码无法成功获取。以下是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_experimental_option("detach", True)


prefs = {
            'profile.default_content_setting_values': {
                'images': 2,
            }
        }
chrome_options.add_experimental_option('prefs', prefs)

chrome_options.add_argument('lang=en')
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()
driver.get('https://www.amazon.com/dp/B09VDD8D8R')
page_star = driver.find_element(By.CLASS_NAME,"a-icon-alt")
page_star_text = page_star.text
# 期望page_star_text的值为“4.1 out of 5 stars”

(元素截图说明:星级对应的是一个带a-icon-alt类的图标元素,目标星级文本存储在该元素的alt属性中)


问题原因及修复方案

1. 文本获取方式错误

目标星级文本并非元素的文本内容,而是存储在元素的alt属性里,直接使用.text方法无法获取,需改用get_attribute('alt')。

2. 未等待页面加载完成

页面未完全加载就执行元素查找操作,可能导致元素未被定位到,需添加显式等待确保元素加载完成。

修正后的代码

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

chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_experimental_option("detach", True)

prefs = {
    'profile.default_content_setting_values': {
        'images': 2,
    }
}
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('lang=en')

driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()
driver.get('https://www.amazon.com/dp/B09VDD8D8R')

# 显式等待元素加载,最长等待10秒
wait = WebDriverWait(driver, 10)
page_star = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "a-icon-alt")))
# 获取元素的alt属性值
page_star_text = page_star.get_attribute('alt')
print(page_star_text)  # 输出应为"4.1 out of 5 stars"

可选:更精准的定位

如果页面存在多个a-icon-alt类元素,可结合父元素缩小范围,比如使用XPATH定位:

page_star = wait.until(EC.presence_of_element_located((By.XPATH, "//div[@id='averageCustomerReviews']//span[@class='a-icon-alt']")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:24