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

Python如何从script标签提取JS对象并解析得到指定HTML内容

实现方案

步骤1:提取JS对象文本片段

首先从你获取的script标签文本中定位到目标JS对象的范围:
大部分电商内嵌的业务数据都遵循变量名 = {JS对象字面量};的格式,你可以通过首尾大括号定位截取有效内容,示例代码如下:

# 假设你拿到的script标签完整内容存储在script_text变量中
# 定位目标JS对象的首个左大括号和最后一个右大括号
start_pos = script_text.find('{')
end_pos = script_text.rfind('}')
js_raw_str = script_text[start_pos:end_pos + 1]

如果script标签内存在多个JS对象,可以先定位到你要的对象对应的变量前缀,比如目标对象赋值给window.detailData,就先找到window.detailData = 的索引位置,再从该位置往后找第一个左大括号作为起始点即可。

步骤2:解析JS对象并提取目标字段

你之前用demjson的思路是可行的,demjson支持解析非严格JSON格式的JS字面量(比如键未加双引号、存在尾逗号等JSON不兼容的写法),直接调用解码方法即可:

import demjson

# 解析JS对象
parsed_data = demjson.decode(js_raw_str)
# 提取目标HTML内容
target_html = parsed_data['tabs'][0]['html']

如果demjson解析出现兼容问题,可替换为json5库解析,使用方式一致:

  1. 先安装依赖:pip install json5
  2. 替换解析代码:
import json5

parsed_data = json5.loads(js_raw_str)
target_html = parsed_data['tabs'][0]['html']

注意事项

  • 如果JS对象中存在Unicode转义字符,可在截取后先处理转义:js_raw_str = js_raw_str.encode('utf-8').decode('unicode_escape')
  • 如果对象嵌套层级过深,可先打印parsed_data的结构确认字段路径和你预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:02