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

使用Selenium下载H&M网站图片遇ValueError: unknown url type问题求助

解决H&M网站图片下载时的ValueError问题

错误核心原因

img.get_attribute('src')返回了空字符串,导致wget.download无法解析无效的URL。H&M网站大概率采用了图片懒加载机制:初始状态下图片的src属性未填充,或者真实图片地址被存储在data-src、data-hm-lazyload-src这类替代属性中。

具体解决建议

  • 确认图片真实地址的存储属性:
    打开浏览器开发者工具(F12),定位目标图片元素,查看其属性列表。比如H&M的商品图常把真实URL放在data-src里,替换代码中的src为对应属性即可:

    # 示例:用data-src替代src获取真实地址
    img_url = img.get_attribute('data-src')
    if img_url:
        wget.download(img_url, save_as)
    
  • 等待图片完全加载后再获取地址:
    使用Selenium的显式等待,确保目标属性被填充后再执行下载操作:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 先等待图片元素出现
    img = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "img[alt*='牛仔裤']"))
    )
    # 等待图片的目标属性非空
    WebDriverWait(driver, 10).until(
        lambda d: img.get_attribute('data-src') != ''
    )
    img_url = img.get_attribute('data-src')
    wget.download(img_url, save_as)
    
  • 模拟滚动触发懒加载:
    部分图片需要滚动到可视区域才会加载真实地址,可通过JS脚本触发滚动:

    # 滚动到图片所在位置
    driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", img)
    # 等待加载完成(可根据网络情况调整时长)
    import time
    time.sleep(2)
    img_url = img.get_attribute('data-src')
    
  • 添加URL有效性校验:
    无论哪种场景,都要在下载前判断URL是否合法,避免无效请求:

    img_url = img.get_attribute('data-src')
    if img_url and img_url.startswith(('http://', 'https://')):
        wget.download(img_url, save_as)
    else:
        print(f"跳过无效图片地址: {img_url}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39