我有一个python脚本,这个python脚本应该调用本地存储在计算机上的html文件(即网页)。 html文件进行一些计算(jquery,javascript等),并将结果传递回python脚本。 我不想更改设置(python脚本调用html文件,结果传递回python脚本)所以请不要问为什么。
有谁能告诉我如何解决这个问题?如何将结果从html文件传递给调用python函数?这让我在2周后感到困扰。 谢谢!
答案 0 :(得分:3)
如果要在HTML文件中执行javascript,则需要在Python中实现完整的javascript运行时(当然,可能存在来自其他语言的现有或端口。)HTML文件不是可执行文件,并且除了浏览器之外,大多数环境都没有解释器。
如果你能以某种方式将javascript与HTML分开(也就是说,如果它不以任何方式依赖于DOM),你可以使用类似SpiderMonkey shell的东西来执行你的javascript和在Python中读取它的标准输出。
如果没有,你需要一个完整的浏览器来解释HTML和javascript,然后你需要以某种方式读取它的(可视)输出,这可能非常复杂。
答案 1 :(得分:1)
http://nodejs.org/
删除任何与dom有关的东西,然后从带有node的命令中运行它,然后从JS节点输出来自节点的Python脚本,然后将输出放入其中。
答案 2 :(得分:0)
如果不使用外部库,这将很难实现。您需要一个HTML解析器,因此您可以真正理解HTML。然后你需要一个Javascript解析器/词法分析器/引擎,这样你就可以进行实际的计算。我想在Python中实现它是可能的,但我建议寻找已经实现了这个的开源项目。然后你必须解析/ lex /解释javascript并将结果传回python。
总而言之,我会说将Javascript计算移植到Python更容易,但那只是我。
答案 3 :(得分:0)
当你说你的Python脚本“调用”HTML文件时你没有明确指出你的意思,但是假设你的意思是Python获取HTML文件的内容,你将需要Python来解释和运行其中的JavaScript开始。
我写了一个Python脚本,登录到我的网上银行提供商(大量使用JavaScript),我最终having to use Selenium控制一个实际的网络浏览器为我解析JavaScript,然后查询DOM通过Selenium呈现的网页。这显然是非平凡的。
我的问题的答案提到了几个Python的HTML解析器。我同意James’ answer - 从HTML文件中获取JavaScript并使用node.js运行它。