获取到某网站的源 html 内容,里面有很多 Script 标签。 其中一个 Script 标签执行了为变量赋值的操作。
<script>
foo.jsonData = {"name":"Bar"}
</script>
请问有什么合理且高效的办法获取{"name":"Bar"}
这个内容?
1
kernelpanic 2023-05-08 21:45:24 +08:00 1
```
html.match(/foo.jsonData = (\{[^}]+})/)[1] ``` |
2
alukongfu 2023-05-09 09:34:07 +08:00
|
3
jazzg62 2023-05-09 11:23:25 +08:00
```ts
import { parse } from '@babel/parser'; import traverse from '@babel/traverse'; import generator from '@babel/generator'; import * as types from '@babel/types'; let obj = '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-05-09 11:24:56 +08:00
也可以用上面 ast 的形式来查找 foo.jsonData 的赋值操作
|