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

如何用Beautiful Soup提取script标签中的markers数组?

提取script标签中的markers数组方法

你已经定位到目标script标签了,接下来按以下步骤就能提取出markers数组:

步骤1:获取script标签的文本内容

你当前拿到的txt是BeautifulSoup的Tag对象,得先提取里面的纯文本内容:

script_content = txt.string  # 也可以用 txt.text

步骤2:用正则提取可解析的配置结构

这段内容是jQuery扩展Drupal.settings的代码,我们需要把大括号里的配置对象单独提取出来。另外注意你提供的内容里"ajaxPageState, "是不完整的键值对,得先修正才能正常解析:

import re
import json

# 匹配配置对象的正则
pattern = re.compile(r'jQuery\.extend\(Drupal\.settings,\s*({.*?})\s*\)')
match = pattern.search(script_content)
if match:
    settings_str = match.group(1)
    # 修复语法错误:把不完整的片段补成合法键值对
    settings_str = settings_str.replace('"ajaxPageState, ', '"ajaxPageState":{}, ')
    # 转成JSON对象
    settings = json.loads(settings_str)
    # 提取markers数组
    markers = settings.get('markers', [])
    print(markers)

更鲁棒的优化方案

如果不确定目标script标签的索引(比如你用的scripts[22]),可以遍历所有script标签,自动定位包含markers的标签:

for script in soup.find_all('script'):
    if script.string and 'markers' in script.string:
        # 在这里执行上面的提取逻辑
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:50:25