Python Selenium程序无输出问题求助(附代码)
问题排查与修复方案
核心问题分析
你的代码无输出主要是3个原因:
- 路径转义错误:ChromeDriver路径里的反斜杠未转义,Python会把
\P这类字符当成无效转义,导致驱动加载异常。 - 多类名定位失效:
By.CLASS_NAME不支持空格分隔的多个类名,这种写法会直接找不到元素。 - 未等待页面加载:亚马逊页面加载较慢,直接查找元素时DOM还没渲染完成,自然拿不到内容。
修复后的代码
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 # 用原始字符串处理路径,避免转义问题 driver = webdriver.Chrome(r"C:\Program Files (x86)\chromedriver.exe") # 隐式等待10秒,给页面足够加载时间 driver.implicitly_wait(10) driver.get('https://www.amazon.co.uk/s?rh=n%3A15488758031&language=en_GB&brr=1&rd=1') # 用CSS_SELECTOR定位多类名元素,替代CLASS_NAME # 显式等待元素加载完成,避免DOM未渲染的问题 wait = WebDriverWait(driver, 15) saites = wait.until(EC.presence_of_all_elements_located( (By.CSS_SELECTOR, '.a-link-normal.s-underline-text.s-underline-link-text.s-link-style.a-text-normal') )) for saite in saites: adrese = saite.get_attribute('href') # 打印标题和链接 print(f"标题: {saite.text}") print(f"链接: {adrese}\n") driver.quit()
额外优化建议
- 添加反爬规避:亚马逊有反爬机制,建议给浏览器添加User-Agent并禁用自动化标识:
options = webdriver.ChromeOptions() options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(r"C:\Program Files (x86)\chromedriver.exe", options=options) - 简化定位逻辑:原代码先找
sg-col-inner再找子元素,可能遗漏部分商品,直接定位所有商品链接更可靠。
内容的提问来源于stack exchange,提问作者Kristaps Melderis
相关产品推荐
相关产品推荐

