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

Selenium爬取亚马逊时触发TimeoutException错误求解决方案

解决Selenium爬取亚马逊商品时的TimeoutException问题

核心问题定位

你代码里的元素定位写法有误:By.CLASS_NAME, "s-result-item s-asin" 中,CLASS_NAME 不支持多个类名(空格分隔的是多类选择器),这是导致超时的直接原因之一。

具体解决步骤

1. 修复元素定位方式

替换原定位代码为以下两种可行方式之一:

方式一:使用CSS选择器(推荐)

items = wait(driver, 30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".s-result-item.s-asin")))

CSS选择器里的.代表类名,多个类名直接拼接(无空格)表示同时匹配这两个类的元素。

方式二:使用XPATH

items = wait(driver, 30).until(EC.presence_of_all_elements_located((By.XPATH, "//div[contains(@class, 's-result-item') and contains(@class, 's-asin')]")))

2. 应对亚马逊反爬机制

亚马逊有严格的反爬策略,即使定位正确也可能因被识别为爬虫而无法加载元素:

  • 配置浏览器参数模拟真实用户:
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--start-maximized")
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options)
    # 隐藏webdriver标识
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    
  • 添加随机延迟与滚动加载:
    import random
    import time
    
    # 页面加载后滚动到底部触发动态加载
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(random.uniform(2, 5))
    
  • 检查是否出现验证码:手动打开目标URL,确认页面是否需要验证码验证,若有需先完成验证(或集成验证码识别工具)。

3. 确保页面完全加载

在等待元素前,先等待页面加载完成:

wait(driver, 30).until(lambda d: d.execute_script('return document.readyState') == 'complete')

4. 同步SelectorLib配置

  • 检查search_results.yml中的选择器是否与当前亚马逊页面结构匹配:亚马逊会频繁更新页面类名/结构,需手动打开页面审查元素,更新配置文件中的选择器。
  • 验证配置文件语法是否正确,避免因选择器错误导致SelectorLib无法解析元素。

测试建议

  1. 手动访问目标搜索URL,打开开发者工具(F12),确认商品元素的类名是否仍为s-result-item和s-asin,若已变更需同步更新定位代码与SelectorLib配置。
  2. 分步执行代码,先打开浏览器加载页面,确认页面正常显示商品列表后再执行元素等待逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:01:19