首页 > 解决方案 > 想要使用beautifulsoup的script标签下的变量值

问题描述

我已经从我的 HTML 源代码中提取了脚本标记。但是想要标签中的变量值。想要 dataForTemplate 变量的值。脚本如下:

      <script>
        var customizedContactUsUrl =
        var dataForTemplate = {
          redirectToOrg : 'Redirecting you to your organization...',
          actionUrl:document.getElementById('actionUrl').action,
          relayState:'3IUARpZFHyXO6th5WtiE5tJLmrHRpc',
          samlValue:'PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPS,
          samlKey:'SAMLResponse',
        }
        var validEmailInputHint = 'Enter a valid email address, formatted as user@company.com.'
        </script>

尝试了以下代码但无法正常工作:

pattern = re.compile('var dataForTemplate = (.);')
            if(pattern.match(str(required_data.string))):
                data = pattern.match(required_data.string)
                print("data",data)
                stock = json.loads(data.groups()[0])
                print(stock)

标签: pythonweb-scrapingbeautifulsouppattern-matching

解决方案


您的正则表达式可能会失败,因为.它将匹配除行终止符之外的单个字符,然后期望;. 你想进行匹配,直到你点击结束 } 所以你需要惰性匹配:

var dataForTemplate = ([\s\S]+?})

解释:

在此处输入图像描述


推荐阅读