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

Python如何提取text/x-magento-init类型script标签中的指定JSON数据

提取Magento init脚本中JSON数据的解决方案

常见错误原因

你之前使用Bs4返回None大概率符合以下几种情况:

  • 查找script标签时未指定正确的type="text/x-magento-init"属性,Bs4默认规则只会匹配text/javascript类型的脚本
  • 页面存在多个同类型Magento初始化脚本时,未做内容筛选匹配到了无关标签
  • 未处理脚本内容中的HTML实体转义字符,导致后续JSON解析失败

可直接运行的实现代码

from bs4 import BeautifulSoup
import json
import html

# 替换为你实际获取的页面源码字符串
html_content = "你的页面完整HTML源码"

# 初始化Bs4解析器,没有lxml可以换成内置的html.parser
soup = BeautifulSoup(html_content, 'lxml')
script_tag = None

# 优先直接匹配带目标特征的script标签
all_magento_scripts = soup.find_all('script', type='text/x-magento-init')
for s in all_magento_scripts:
    raw_text = s.get_text()
    if '#conf-select-attr-173' in raw_text:
        script_tag = s
        break

# 解析JSON内容
raw_content = script_tag.get_text(strip=True)
# 处理HTML实体转义,把"这类字符转为正常引号
unescaped_content = html.unescape(raw_content)
full_data = json.loads(unescaped_content)

# 提取你需要的config字段
target_config = full_data['#conf-select-attr-173']['Magento_ConfigurableProduct/js/configurable/select/action']['config']

字段取值示例

解析完成后可直接从target_config字典中提取所需业务数据:

  • 所有尺码选项:target_config['attributes']['173']['options']
  • 各尺码对应价格:target_config['optionPrices']
  • 各尺码库存状态:target_config['stock']
  • 各尺码对应SKU:target_config['sku']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:27:06