10

当前将 shell_exec 与 Xvfb 和 FireFox 一起使用来捕获屏幕截图。但是,需要使用 shell_exec 将整个 html(例如,将页面另存为 --> 网页完成)下载到一个目录中。查看了 Mozilla 开发者论坛中提供的所有不同选项,但无法弄清楚如何做到这一点。

这段代码似乎是我可能需要的,但是它是在哪里以及如何实现的,以便可以在 shell_exec 中访问它?

var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\filename.html");
var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
.createInstance(Components.interfaces.nsIWebBrowserPersist);
wbp.saveDocument(content.document, file, null, null, null, null);

以上代码源

void saveDocument(
in nsIDOMDocument aDocument,
in nsISupports aFile,
in nsISupports aDataPath,
in string aOutputContentType,
in unsigned long aEncodingFlags,
in unsigned long aWrapColumn
);

以上代码源

这里有一个 Stackoverflow 手动解决方案,但它没有解决 shell_exec: 如何在本地保存网页,包括图片等

4

1 回答 1

1

我知道的选项很少,但我知道没有一个选项完全符合您的问题。

  1. firefox http://yoursite.com从外壳打开,然后使用xte或类似方法将击键发送到 Firefox。(虽然这不是无头模式。)
  2. 使用 wget 下载。它可以以递归方式工作。或者,如果它是非常简单的网页,您也可以解析 HTML。如果您需要提交表单,请使用 curl 而不是 wget。
  3. 使用greasemonkey插件并编写一个脚本,该脚本将被加载http://some-fake-page.com/?download=http://yoursite.com然后使用该假页面网址打开Firefox。
  4. 开发您自己的 Firefox 插件来完成上述工作。

可能还有其他更好的选择,但我不知道。

于 2013-02-03T11:33:40.283 回答