使用python获取javascript变量

2024-10-05 14:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

把我的头撞到这里。。在

我试图用regex解析javascript变量“ListData”的全部内容,它以声明var Listdata =开头,以};结束。在

我找到了一个类似的解决方案:

Fetch data of variables inside script tag in Python or Content added from js

但我无法让它匹配整个regex。在

代码:

# Need the ListData object
pat = re.compile('var ListData = (.*?);')

string = """QuickLaunchMenu == null) QuickLaunchMenu = $create(UI.AspMenu, 
null, null, null, $get('QuickLaunchMenu')); } ExecuteOrDelayUntilScriptLoaded(QuickLaunchMenu, 'Core.js');
var ListData = { "Row" : 
[{
"ID": "159",
"PermMask": "0x1b03cc312ef",
"FSObjType": "0",
"ContentType": "Item"
};
moretext;
moretext"""

#Returns NoneType instead of match object
print(type(pat.search(string)))

不知道这里出了什么问题。任何帮助都会得到回报的。在


Tags: of声明stringobjectvarjsjavascriptnull
1条回答
网友
1楼 · 发布于 2024-10-05 14:30:05

在regex中,(.*?);部分匹配除换行符之外的任何0+字符,直到第一个;。如果行中没有;,则没有匹配项。在

根据您期望的匹配以行尾的第一个};结束,您可以使用

'(?sm)var ListData = (.*?)};$'

在这里

  • (?sm)-启用re.S(它使.匹配任何字符)和{}(这使得$匹配行的结尾,而不仅仅是整个字符串,并使^匹配行的开始位置)模式
  • var ListData =
  • (.*?)-组1:任何0+字符,尽可能少,直到第一个。。。在
  • };$-};在一行末尾

相关问题 更多 >