2

我有一个python 脚本,这个python 脚本将调用本地存储在计算机上的html 文件(即网页)。html 文件进行一些计算(jquery、javascript 等)并且应该将结果传回给 python 脚本。我不想更改设置(python 脚本调用 html 文件并将结果传递回 python 脚本)所以请不要问为什么。

谁能告诉我如何解决这个问题?如何将结果从 html 文件传递​​给调用 python 函数?自从两周以来,这一直困扰着我。谢谢!

4

4 回答 4

3

如果要在 HTML 文件中执行 javascript,则需要在 Python 中实现完整的 javascript 运行时(当然可能存在现有的或来自其他语言的端口。)HTML 文件不是可执行文件,大多数环境不'也没有解释器,除了浏览器。

如果您可以以某种方式将 javascript 与 HTML 分开(也就是说,如果它不以任何方式依赖 DOM),您可能可以使用SpiderMonkey shell 之类的东西来执行您的 javascript 并在 Python 中读取它的标准输出。

如果没有,您将需要一个完整的浏览器来解释 HTML 和 javascript,然后您需要以某种方式读取它的(视觉)输出,这可能非常复杂。

于 2011-08-23T09:17:46.390 回答
1

http://nodejs.org/
删除与 dom 相关的任何内容并使用 node 从命令中运行它,然后使用来自 JS 的输出从 node 调用 Python 脚本,然后在某个地方通过管道输出。

于 2011-08-23T09:39:10.330 回答
0

当您说您的 Python 脚本“调用”HTML 文件时,您并没有具体说明您的意思,但假设您的意思是 Python 获取 HTML 文件的内容,您将需要 Python 来解释和运行其中的 JavaScript开始。

我编写了一个 Python 脚本来登录我的网上银行服务提供商(它大量使用 JavaScript),最后我不得不使用 Selenium来控制一个实际的网络浏览器来为我解析 JavaScript,然后查询渲染网页的 DOM通过硒。这绝对不是微不足道的。

我的问题的答案提到了几个用于 Python 的 HTML 解析器。不过,我同意James 的回答——从 HTML 文件中获取 JavaScript 并使用 node.js 运行它。

于 2011-08-23T09:50:23.767 回答
0

如果不使用外部库,这将很难实现。您需要一个 HTML 解析器才能开始,这样您才能真正理解 HTML。然后你需要一个 Javascript 解析器/词法分析器/引擎,这样你就可以进行实际的计算。我想可以在 Python 中实现这个,但我建议寻找一个已经实现这个的开源项目。然后,您必须解析/lex/解释 javascript 并将结果传回给 python。

总而言之,我想说将 Javascript 计算移植到 Python 更容易,但这只是我。

于 2011-08-23T09:15:58.893 回答