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

如何修复从Shopify站点抓取图片链接的AttributeError错误

解决Shopify图片链接抓取的AttributeError问题

错误原因

你遇到的AttributeError: 'NoneType' object has no attribute 'get',本质是代码中指定的图片容器class与实际HTML不匹配:页面里的图片class是lazyload grid__image-contain,但你代码里查找的是grid__image-contain lazyautosizes lazyloaded——这两组class是图片不同加载状态的标识(lazyload是未加载状态,lazyloaded是已加载状态),导致找不到目标元素返回None,调用.get()时触发报错。

修改Field_01的具体方案

1. 匹配核心class,忽略状态类

grid__image-contain是Shopify图片容器的固定核心class,不受加载状态影响,所以调整查找逻辑,只匹配这个核心class:

# 假设使用BeautifulSoup库
from bs4 import BeautifulSoup

# 解析HTML内容
soup = BeautifulSoup(html_content, 'html.parser')

# 查找包含核心class的首个图片容器
img_container = soup.select_one('.grid__image-contain')

2. 兼容懒加载的链接获取逻辑

Shopify图片懒加载时,真实链接存在data-src属性;加载完成后会转移到src属性,所以要同时处理两种情况,且增加容错判断:

field_01 = None
if img_container:
    img_tag = img_container.find('img')
    if img_tag:
        # 优先取懒加载的真实链接,无则取src
        field_01 = img_tag.get('data-src') or img_tag.get('src')

3. 整体优化后的Field_01代码示例

# 整合后的完整逻辑
def extract_first_image(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    img_container = soup.select_one('.grid__image-contain')
    if not img_container:
        return None
    img_tag = img_container.find('img')
    return img_tag.get('data-src') or img_tag.get('src') if img_tag else None

# 调用示例(假设txt文件读取的内容存在html变量中)
field_01 = extract_first_image(html)

关键注意点

  • 必须增加多层判断(容器是否存在、img标签是否存在),避免None调用方法的报错
  • 同时处理data-src和src,覆盖图片不同加载状态的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:45:37