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

时间:2011-07-19 01:16:42

标签: javascript python regex parsing

我正在尝试从以下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,所以我认为最好的方法可能是使用正则表达式,但我很新,我到目前为止没有尝试过似乎工作。有关如何实现这一目标的任何建议或帮助吗?

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

/'ProductValue'\s*,\s*(.*?)\s\)/