繁体   English   中英

如何使用正则表达式提取 Javascript 值?

[英]How do I Extract a Javascript Value using Regular Expressions?

我正在尝试从 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 很陌生,到目前为止我尝试过的任何东西似乎都不起作用。 关于如何做到这一点的任何建议或帮助?

谢谢!

这应该有效:

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
/'ProductValue'\s*,\s*(.*?)\s\)/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM