gpt4 book ai didi

python - 使用 BeautifulSoup 从 HTML 页面中提取 JavaScript 函数的参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:25 25 4
gpt4 key购买 nike

我正在解析一个包含多个 script block 的 HTML 页面:

<script type="text/javascript">
// some code
</script>
<script type="text/javascript">
foo(arg1, arg2);
// some code
</script>

我需要提取 foo 函数的参数 - 'arg1' 和 'arg2'。目前我可以获得script标签的内部内容:

def parse_foo(pageContent):
soup = BeautifulSoup(pageContent)
scriptTags = soup.find_all('script')
for script in scriptTags:
tagContent = script.get_text()
if tagContent.count('foo') > 0:
return tagContent
return ''

有什么方法可以使用 BeautifulSoup 获取参数,还是应该使用正则表达式?

最佳答案

pyesprima是 Esprima 的一个端口,“一个用 ECMAScript 编写的高性能、符合标准的 ECMAScript 解析器”。幸运的是,它易于使用。不幸的是,它有点慢。

甚至还有一个在线解析器工具可供使用:http://esprima.org/demo/parse.html

当我输入 foo(arg1,arg2); 时,返回:

{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "foo"
},
"arguments": [
{
"type": "Identifier",
"name": "arg1"
},
{
"type": "Identifier",
"name": "arg2"
}
]
}
}
]
}

树:

                ExpressionStatement
|
expression
/ | \
type=callExpression callee arguments
|
name=foo
  1. 查找带有名为“foo”的 expression.callee.name 的 ExpressionStatement。
  2. 返回 ExpressionStatement 的 arguments.raw(您需要将“raw”选项设置为 True,请参阅文档)

关于python - 使用 BeautifulSoup 从 HTML 页面中提取 JavaScript 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com