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

Selenium Python抓取商品图片仅返回第一条链接的问题求助

问题原因

你只能拿到第一张图片链接的核心原因是该Shopify站点的产品详情页采用了懒加载策略:未进入可视区域、未被触发展示的图片不会提前渲染对应DOM元素,也不会填充data-original-src属性,因此初始状态下你只能定位到当前展示的第一张图片元素。

解决方案

方案1:模拟交互触发所有图片加载后提取

通过点击所有缩略图触发大图加载,再逐一提取链接,适配懒加载逻辑:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 等待所有缩略图元素加载完成
thumbnails = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.Product__Thumbnail'))
)

image_links = []
for thumb in thumbnails:
    # 点击缩略图触发对应大图渲染
    thumb.click()
    time.sleep(0.3)
    # 提取当前大图的链接属性
    current_img = driver.find_element(By.CSS_SELECTOR, '#shopify-section-product-template .Image--lazyLoaded')
    img_src = current_img.get_attribute('data-original-src')
    if img_src and img_src not in image_links:
        # 补全链接协议(Shopify默认返回//开头的无协议链接)
        full_src = f"https:{img_src}" if img_src.startswith('//') else img_src
        image_links.append(full_src)

方案2:直接提取页面预加载的产品JSON数据(更稳定)

Shopify所有产品页都会在前端嵌入全局产品数据,无需处理DOM渲染和懒加载,直接通过JS提取即可拿到全量图片链接:

# 执行JS读取全局对象中存储的完整产品信息
product_info = driver.execute_script("return window.Shopify.product;")
# 直接提取所有图片的完整链接
image_links = [img["src"] for img in product_info["images"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:03