簡體   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