Python爬取网站sellableUnits尺码值重复4次如何解决
问题原因
出现重复值的核心原因是你遍历的sellableUnits节点是按独立可售SKU维度存储的,而非按尺码维度存储:同一个尺码通常会对应多个独立的SKU条目(比如同尺码下不同库存批次、不同仓配来源、不同营销标签的可售单元都会被单独存为一条sellableUnit记录),每条记录的attributes下都存储了相同的尺码值。你当前的逻辑会遍历所有SKU条目提取尺码,自然会把同一个尺码重复追加到列表里,你遇到的重复4次的情况,就是每个尺码恰好对应4个SKU条目导致的。
另外你当前写死取attributes[0]的写法存在兼容性隐患:如果网站后续调整attributes数组内的属性排序,把非尺码属性放到第一位,就会提取到错误的值。
修复方法
推荐使用保序去重的逻辑提取尺码,同时优化属性匹配逻辑避免排序变动导致的抓取错误,参考代码如下:
all_sizes = [] seen_sizes = set() for sellable_unit in data['sellableUnits']: # 遍历属性找到类型为size的节点,不依赖固定下标 for attr in sellable_unit['attributes']: if attr.get('type') == 'size': current_size = attr['value'] # 只追加未出现过的尺码,避免重复同时保留原有排序 if current_size not in seen_sizes: seen_sizes.add(current_size) all_sizes.append(current_size) break # 按需选择拼接格式:需要空格分隔的尺码串就用' '.join,需要换行展示就用'\n'.join size_result = ' '.join(all_sizes)
注意:不要直接使用
list(set(all_sizes))的方式去重,这种写法会打乱接口返回的原有尺码顺序,可能出现尺码排序混乱的问题。
内容的提问来源于stack exchange,提问作者Crapts
相关产品推荐
相关产品推荐

