【问题标题】:How do I Extract a Javascript Value using Regular Expressions?如何使用正则表达式提取 Javascript 值?
【发布时间】:2011-10-08 03:36:12
【问题描述】:

我正在尝试从以下 Javascript 中提取 ProductValue

<script language="javascript" type="text/javascript">
lpAddVars('page','Section','womens');
lpAddVars('page','CartTotal','0.00');

    lpAddVars('page','ProductID','43577');
    lpAddVars('page','ProductValue','128.00');  

</script>

我不认为 Beautiful Soup 解析 javascript,所以我认为最好的方法可能是使用正则表达式,但我对 re 很陌生,到目前为止,我尝试过的任何方法似乎都不起作用。有关如何完成此操作的任何建议或帮助?

谢谢!

【问题讨论】:

    标签: javascript python regex parsing


    【解决方案1】:

    这应该可行:

    import re
    
    javascript_text = '''
        <script language="javascript" type="text/javascript">
        lpAddVars('page','Section','womens');
        lpAddVars('page','CartTotal','0.00');
    
            lpAddVars('page','ProductID','43577');
            lpAddVars('page','ProductValue','128.00');  
    
        </script>
    '''
    
    product_value = re.findall(r"ProductValue.*,['|\"](.*)['|\"]", javascript_text)
    
    # at this point, product_value = ['128.00']
    

    那么 "ProductValue.*,'|\"['|\"]" 到底在做什么呢?

    "ProductValue.*,'|\"['|\"]"

    ProductValue -- 只是您要搜索的文字字符串

    .* -- 我们想要任意数量的字符,所以空格、单引号等等

    , -- 一旦我们到达“,”,我们将停止允许“.*”匹配所有字符

    ['|\"] -- 我们想匹配单引号或双引号

    (.*) -- 这是我们真正感兴趣的位,可以是任何字符

    ['|\"] -- 同样,一旦我们到达结束单引号或双引号,我们将停止 ".*"

    从现在开始,我会做这样的事情:

    product_values = []
    for value in product_value:
        value = value.strip() # get rid of any excess whitespace
        value = float(value) # ProductValue appears to be a float of some sort
        product_values.append(value) # store the value
    

    【讨论】:

    • 谢谢,这很好用! SO 上的答案质量总是让我惊讶:)
    【解决方案2】:
    /'ProductValue'\s*,\s*(.*?)\s\)/
    

    【讨论】:

    • 谢谢!我实际上对正则表达式知之甚少,以至于我什至不知道如何实现它。 re.search("/'ProductValue'\s*,\s*(.*?)\s\)/", html)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2023-03-15
    • 2021-11-07
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    相关资源
    最近更新 更多