【发布时间】:2018-06-03 17:37:03
【问题描述】:
我正在使用 Chrome 获取由 javascript 生成的网页的 HTML。执行所有这些操作的 applescript 需要每 2 分钟运行一次。一切都运行良好,除了我显然需要 Chrome 完全在后台执行此操作。我的脚本包含以下对 Chrome 的使用(以及设置 theTab 的块,这似乎不会导致 Chrome 出现在前面):
set URL of theTab to theURL
set isLoading to (loading of theTab)
execute front window's active tab javascript javascriptLocation
set theSource to execute front window's active tab javascript "document.documentElement.outerHTML"
把这条线:
tell application "Finder" to set visible of process "Google Chrome" to false
在上述每一行之后,要么根本没有隐藏,要么 Chrome 在屏幕上闪烁然后消失。我觉得这很让人分心。
有没有办法让应用程序在后台可靠且永久地运行?或者,如果失败了,是否有一种不可见的方式让 javascript 在服务器端执行,以便 applescript 可以获取其生成的源代码?
Chrome 66.0.3359.181 在 Mac OS 10.11.6、Applescript 2.5 上运行。
【问题讨论】:
-
如果你想要的只是 HTML,为什么不使用 CURL 来获取呢?或者编写某种简单的工具? (也许我不明白为什么你需要一个成熟的 GUI 应用程序来完成这里的工作。)
-
或者如果你想运行无头 JavaScript,试试 PhantomJS:phantomjs.org
-
我不确定这一点,因为除了使用它之外,我几乎从不对网络做任何事情,但我很确定我需要在服务器端执行 javascript。我尝试了各种方法(我现在不记得了,这是几个月前的事了)来实现这一点,发现 Chrome 是唯一有效的方法。你提到的工具可以吗?
-
感谢 PhantomJS 的建议,没听说过无头模式。事实证明 Chrome 也可以在命令行模式下无头运行,并且有一个选项 (--dump-dom) 可以完全按照我的意愿运行。我的代码现在更短、更简洁,而且我不必让 Chrome 24/7 运行,就可以获取我的 HTML!非常感谢:-)
-
太棒了!您应该回答自己的问题,并且在 48 小时内您可以接受您的回答。我认为这对其他人可能有用。