2013-02-03 20 views
6

Utilizzo di shell_exec con Xvfb e FireFox attualmente per acquisire schermate. Tuttavia, è necessario scaricare l'intero html (ad esempio Salva pagina come -> pagina Web completa.) In una directory utilizzando shell_exec. Abbiamo esaminato tutte le diverse opzioni disponibili nei forum di Mozilla Developers ma non siamo riusciti a capire come farlo.Utilizzo di FireFox senza testa per salvare tutti i file HTML utilizzando la riga di comando in Linux

Questo codice sembra essere quello di cui potrei aver bisogno ma dove e come viene implementato in modo che possa essere accessibile in 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

C'è una soluzione manuale StackOverflow qui, ma non affronta shell_exec: How to save a webpage locally including pictures,etc

risposta

1

Ci sono alcune opzioni che io sappia, ma nessuno di quelli che conosco risponde alla tua domanda esattamente ...

  1. Aprire firefox http://yoursite.com dalla shell, quindi inviare sequenze di tasti a firefox utilizzando xte o metodo simile. (Questa non è comunque la modalità headless.)
  2. Download tramite wget. Può funzionare in modo ricorsivo. In alternativa, puoi analizzare l'HTML, se è una pagina web piuttosto semplice. Se devi inviare un modulo, usa il ricciolo invece di wget.
  3. Usa greasemonkey addon & scrivi uno script, che verrebbe caricato su http://some-fake-page.com/?download=http://yoursite.com & quindi aprire firefox con quell'URL di pagina falsa.
  4. Sviluppa il tuo addon per Firefox da fare al di sopra del lavoro.

Potrebbero esserci altre opzioni migliori anche per questo, ma non li conosco.

+0

Grazie. Penso che la tua risposta numero tre potrebbe essere la chiave. E, come o cosa fanno i frammenti di codice forniti da Mozilla, (Il mio esempio uno)? Hanno molti di questi ma nessuna spiegazione su cosa fare con loro. La tua risposta tre potrebbe essere il modo di usarli direttamente. – user2036418

+0

Non sono sicuro, se è possibile utilizzare frammenti di codice mozilla direttamente da uno script greasemonkey. (Ma potrei sbagliarmi.) Possono essere usati direttamente da un addon personalizzato. Tuttavia, GM fornisce una funzione wrapper per utilizzare alcune delle API di mozilla – anishsane