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