Scrapy提取商品图片返回空值 如何获取逗号分隔的图片链接
问题原因
原选择器返回空的核心原因有两个:
- 目标站点的商品画廊图片容器是
div标签,不是原代码写的figure标签,标签名不匹配直接导致选择器命中不到任何节点 - 站点对商品图做了懒加载处理,高清原图地址没有直接放在a标签的
href属性上,直接取href拿不到有效链接
调整后的提取方案
直接匹配画廊容器上存储的高清原图自定义属性,稳定性最高,步骤如下:
- 把选择器的标签从
figure改为div,匹配真实DOM节点 - 直接读取节点上的
data-large_image属性,拿到未压缩的高清商品图地址,避开懒加载占位图干扰 - 对提取结果去重、过滤空值,避免WooCommerce默认输出重复尺寸图的问题
- 把处理后的图片列表用逗号拼接成字符串
对应的Scrapy代码如下:
# 提取所有商品高清图链接 raw_img_list = response.css('div.woocommerce-product-gallery__image::attr(data-large_image)').getall() # 去重+过滤空值+转绝对路径 processed_img_list = [] for img in raw_img_list: if not img: continue full_img_url = response.urljoin(img) if full_img_url not in processed_img_list: processed_img_list.append(full_img_url) # 拼接为逗号分隔的字符串 item['img'] = ','.join(processed_img_list)
兜底方案:如果上述选择器仍有漏图,可以补充提取画廊内所有img标签的
data-src、src属性,和之前的结果合并去重即可,对应选择器为div.woocommerce-product-gallery img::attr(data-src), div.woocommerce-product-gallery img::attr(src)
内容的提问来源于stack exchange,提问作者Hannah James
相关产品推荐
相关产品推荐

