
获取到某网站的源 html 内容,里面有很多 Script 标签。 其中一个 Script 标签执行了为变量赋值的操作。
<script> foo.jsOnData= {"name":"Bar"} </script> 请问有什么合理且高效的办法获取{"name":"Bar"}这个内容?
1 kernelpanic 2023 年 5 月 8 日 ``` html.match(/foo.jsOnData= (\{[^}]+})/)[1] ``` |
2 suckinbottle 2023 年 5 月 9 日 |
3 jazzg62 2023 年 5 月 9 日 ```ts import { parse } from '@babel/parser'; import traverse from '@babel/traverse'; import generator from '@babel/generator'; import * as types from '@babel/types'; let bj = 'foo'; let pro = 'jsonData'; let script = `let foo = {} foo.jsOnData= {"name":"Bar"} foo.aa = '123'; `; let ast = parse(script, { sourceType: 'script' }); let res = ''; traverse(ast, { AssignmentExpression(path) { let node = path.node; if(types.isMemberExpression(node.left) ){ let object = node.left.object; let property = node.left.property; if(types.isIdentifier(object) && object.name == obj && types.isIdentifier(property) && property.name == pro){ res = generator(node.right).code; } } }, }); console.log(res); ``` |
4 jazzg62 2023 年 5 月 9 日 也可以用上面 ast 的形式来查找 foo.jsonData 的赋值操作 |