如何用Python Selenium提取网页JS中商品条码与规格属性值
最优实现方案
核心逻辑:目标数据已经存储在页面全局JS变量中,不需要正则匹配拆分script标签内容,直接通过Selenium执行JS语句读取变量即可,自动转换为Python字典结构后遍历就能拿到全量规格与条码对应关系,可靠性远高于正则拆分。
可直接运行的实现代码
def barkodBul(): # 直接执行JS读取全局变量,返回结果自动转换为Python字典/列表结构 product_data = driver.execute_script("return window.__PRODUCT_DETAIL_APP_INITIAL_STATE__") # 空值校验避免报错 if not product_data or not product_data.get("product", {}).get("variants"): return [] result_list = [] # 遍历所有规格项提取对应值 for variant in product_data["product"]["variants"]: spec_value = variant.get("attributeValue", "未知规格") barcode_value = variant.get("barcode", "无对应条码") # 按你需要的格式拼接输出 output_item = f"{spec_value} 对应{spec_value}的条码:{barcode_value}" print(output_item) result_list.append(output_item) return result_list
原代码问题说明
- 拆分脚本内容时只取了第一个包含
barcode的片段,所以只能拿到单个条码 - 用字符串拆分的方式解析类JSON结构,容错率极低,页面结构稍微变化就会匹配失败
- 匹配到第一个条码后就直接
return,终止了遍历逻辑,无法获取全量数据
内容的提问来源于stack exchange,提问作者tarikdelibas
相关产品推荐
相关产品推荐

