如何用Python+Selenium爬取亚马逊商品页首张大图的src链接
问题原因分析
- 原代码直接定位页面第一个
<img>标签,取到的是亚马逊站点logo等非目标元素,无法获取商品主图链接 - 固定
time.sleep稳定性差,容易出现页面未完全加载就执行元素定位的情况 - 无头模式默认UA会被亚马逊反爬策略识别,可能返回异常页面导致找不到目标元素
调整后的实现代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 目标商品链接需用引号包裹为字符串格式 url = "https://www.amazon.fr/dp/B07CG3HFPV/ref=cm_sw_r_fm_api_glt_i_2RB9QBPTQXWJ7PQQ16MZ?_encoding=UTF8&psc=1" options = Options() options.headless = True # 模拟正常浏览器UA,规避反爬检测 options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") # 兼容不同运行环境,避免启动报错 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=options) driver.get(url) try: # 显式等待商品主图加载完成,最长等待10秒 main_img = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "landingImage")) ) # 获取大尺寸原图链接 link_img = main_img.get_attribute("src") print(link_img) finally: driver.quit()
关键调整说明
- 亚马逊商品主图的固定ID为
landingImage,直接通过ID定位可以精准找到目标元素 - 替换固定等待为显式等待,只要元素加载完成就立即执行后续操作,兼顾稳定性和效率
- 添加异常处理的最终退出逻辑,避免浏览器进程残留占用系统资源
内容的提问来源于stack exchange,提问作者JohnDoe
相关产品推荐
相关产品推荐

