使用Headless FireFox在Linux中使用命令行保存所有HTML文件

时间:2013-02-03 03:17:44

标签: shell firefox headless

目前使用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);

The Above Code Source

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

The Above Code Source

这里有一个Stackoverflow手动解决方案,但它不涉及shell_exec: How to save a webpage locally including pictures,etc

1 个答案:

答案 0 :(得分:1)

我知道的选项很少,但我所知道的选项都不符合您的问题。

  1. 从shell打开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插件以完成上述工作。
  5. 也可能有其他更好的选择,但我不知道。