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

使用Selenium抓取ASOS懒加载商品图片遇阻,寻求解决方案

解决ASOS商品页懒加载图片及Video海报抓取问题

你的问题核心在于ASOS的懒加载机制和混合媒体元素(img/video):

  • 未进入视口的商品图片不会加载真实src,仅保留懒加载属性(比如data-src)
  • 部分商品用带poster属性的video标签展示封面,而非img标签

下面是针对这两个问题的解决方案:

核心思路

  1. 逐个滚动到商品容器,触发懒加载,让浏览器加载真实图片地址
  2. 同时兼容img标签和video标签的海报提取
  3. 优先读取已加载的src, fallback到懒加载属性(比如data-src)

修改后的代码实现

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

imgsSrc = set()

# 等待所有商品容器加载完成(确保已点击完所有"加载更多")
containers = WebDriverWait(driver, 20).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, "productMediaContainer_kmkXR"))
)

for idx, container in enumerate(containers):
    # 滚动到当前商品容器,触发懒加载
    ActionChains(driver).move_to_element(container).perform()
    # 等待元素完全可见,确保图片加载完成
    WebDriverWait(driver, 5).until(EC.visibility_of(container))

    # 尝试提取img标签的图片地址
    try:
        img_elem = container.find_element(By.TAG_NAME, "img")
        # 先取已加载的src,没有则取懒加载的data属性(根据ASOS实际属性调整)
        img_src = img_elem.get_attribute("src") or img_elem.get_attribute("data-src")
        if img_src:
            imgsSrc.add(img_src)
    except:
        # 若没有img,提取video标签的poster属性
        try:
            video_elem = container.find_element(By.TAG_NAME, "video")
            poster_src = video_elem.get_attribute("poster")
            if poster_src:
                imgsSrc.add(poster_src)
        except:
            print(f"第{idx+1}个商品未找到有效图片资源")

print(f"成功抓取到 {len(imgsSrc)} 张图片地址")

关键细节说明

  • 滚动触发懒加载:必须逐个滚动到每个商品容器,而不是只滚到页面底部——ASOS的懒加载是基于元素是否进入视口,批量滚动到底部可能无法触发所有元素的加载
  • 懒加载属性兼容:如果发现src还是占位图,检查元素的其他属性(比如data-image、data-lazy-src),替换代码中的data-src即可
  • 异常处理:用try-except分别处理img和video的情况,避免单个商品的异常中断整个抓取流程
  • 等待机制:使用WebDriverWait确保元素渲染完成,减少因页面加载延迟导致的元素找不到问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:03:16