14

Ich habe im folgenden Artikel über Headless Chrome suchen:
https://developers.google.com/web/updates/2017/04/headless-chromeWie verwende ich Headless Chrome in Chrome 60 unter Windows 10?

Ich habe ein Upgrade Chrome unter Windows 10 auf Version 60, aber wenn ich eine der beiden folgenden Befehle von der Befehlszeile ausführen, scheint nichts zu passieren:

chrome --headless --disable-gpu --dump-dom https://www.google.com/ 
chrome --headless --disable-gpu --print-to-pdf https://www.google.com/ 

Und ich all diese Befehle aus dem folgenden Pfad ausgeführt wird (der Standardinstallationspfad für Chrome unter Windows):

C:\Program Files (x86)\Google\Chrome\Application\ 

Wenn ich die Befehle ausführe, scheint etwas für eine Sekunde zu laufen, aber ich sehe nichts. Was mache ich falsch?
Danke.


Edit:

Wie von Mark Rajcok erwähnt, wenn Sie --enable-logging zum --dump-dom Befehl hinzufügen, es funktioniert. Der Befehl --print-to-pdf funktioniert auch in Chrome 61.0.3163.79, aber Sie müssen wahrscheinlich einen anderen Pfad für die Ausgabedatei angeben, um die erforderlichen Berechtigungen zum Speichern zu erhalten.

Als solche die folgenden zwei Befehle für mich gearbeitet:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --disable-gpu --enable-logging --dump-dom https://www.google.com/ 
"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --disable-gpu --print-to-pdf=D:\output.pdf https://www.google.com/ 

Ich denke, der nächste Schritt der Lage ist, zu sein wie PhantomJS durch die abgeladen DOM zu Schritt mit DOM-Selektoren und so weiter, aber ich nehme an, dass eine separate Frage.

+1

Probieren Sie dies in Chrome 61.0.3163.79, funktioniert aber immer noch nicht. – HartleySan

+1

Ich hatte den ganzen Abend das gleiche Problem. Es könnte ein anderes Problem für Sie sein, aber in meinem Fall handelte es sich um die entsprechenden Berechtigungen, um eine Datei in das Verzeichnis der Programmdateien zu schreiben. Genauso funktioniert es nicht, C: \ output.pdf zu versuchen, aber c: \ users \ username \ output.pdf funktioniert gut. Ebenso, wenn Sie die Berechtigungen für den Ordner '... application/chrome' ändern, funktioniert es genauso wie --print-to-pdf ohne weiteres Argument. – Tim

+0

das funktioniert auch: '--screenshot = C: \ Temp \ screenshot.png' – vladkras

Antwort

1

Sie sollten gut sein. Überprüfen Sie unter der Chrome-Version Verzeichnis

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78 

Für den Befehl

chrome --headless --disable-gpu --print-to-pdf https://www.google.com/ 

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78\output.pdf 

Edit: Noch Befehle ausführen, wo die Chrom ausführbar ist, in diesem Fall

C:\Program Files (x86)\Google\Chrome\Application\ 
+0

Ich habe diesen Ordner, aber es gibt keine ausführbare Chrome-Datei darin. Ich erhalte den folgenden Fehler: ''chrome' wird nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt. ' – HartleySan

+0

Ja, immer noch in dem Kontext ausgeführt, in dem sich die ausführbare Datei in' C: \ Programme (x86) befindet \ Google \ Chrome \ Application' Ich fand die Datei in 'C: \ Programme (x86) \ Google \ Chrome \ Application \ 60.0.3112.78 \' sinnvoll? – version2

+1

Ich verstehe, was Sie jetzt sagen, aber wenn ich den folgenden Befehl aus dem folgenden Pfad ausführen, habe ich keine output.pdf-Datei unter '60.0.3112.78' oder irgendwo:' chrome --headless --disable- gpu --print-zu-pdf https: // www.google.com/'; C: \ Programme (x86) \ Google \ Chrome \ Application \ – HartleySan

3

Mit Chrome 61.0.3163.79 Wenn ich --enable-logging hinzufüge, dann erzeugt --dump-dom Ausgabe:

> "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-logging --headless --disable-gpu --dump-dom https://www.chromestatus.com 
<body class="loading" data-path="/features"> 
<app-drawer-layout fullbleed=""> 
... 
</script> 
</body> 

Wenn Sie programmatisch ohne Kopf Chrome steuern wollen, hier ist ein Weg, um es mit Python3 und Selen zu tun:

In einem Admin cmd Fenster, Selen für Python zu installieren:

C:\Users\Mark> pip install -U selenium 

Download ChromeDriver v2.32 und extrahieren Sie es.Ich legte den chromedriver.exe in C:\Users\Mark, das ist, wo ich dieses headless.py Skript Python setzen:

from selenium import webdriver 

options = webdriver.ChromeOptions() 
options.add_argument("headless") # remove this line if you want to see the browser popup 
driver = webdriver.Chrome(chrome_options = options) 
driver.get('https://www.google.com/') 
print(driver.page_source) 
driver.quit() # don't miss this, or chromedriver.exe will keep running! 

Run es in einem normalen cmd Fenster:

C:\Users\Mark> python headless.py 
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" ... 
... lots and lots of stuff here ... 
...</body></html> 
+0

Mark Rajcok, kann dies funktionieren, aber ich werde nicht alles tun davon, um es zu testen. Ich habe nichts gegen Ihre Antwort. Wenn Chrome jetzt wirklich als Headless-Browser arbeiten kann, sollten Sie nicht alles durchgehen müssen, um es zum Laufen zu bringen. Wenn es nicht ohne irgendwelche Optimierungen/externe Programme sofort funktioniert, dann benutze ich einfach weiterhin PhantomJS. Vielen Dank. Wenn andere Leute diese Lösung testen und verbessern möchten, ist das in Ordnung. Vielen Dank. – HartleySan

+2

@HartleySan, ich habe festgestellt, dass es funktioniert, wenn Sie '--enable-logging' hinzufügen. Ich habe die Antwort aktualisiert. –

+0

Eine kleine Anmerkung: Um zu vermeiden, dass Sie das Skript und die ausführbare Datei "chromedriver.exe" im selben Ordner ablegen müssen, legen Sie "chromedriver.exe" irgendwo in Ihrem% PATH% ($ env: PATH, wenn Sie PowerShell verwenden). –

0

Wenn Sie in der Regel auf das Problem ausweichen wollen, und benutze einfach irgendeinen Service, um die Arbeit für dich zu erledigen, ich bin der Autor/Gründer von browserless, der versucht, Headless Chrome in einer serviceähnlichen Art und Weise anzugehen. Abgesehen davon ist es ziemlich schwierig, mit den Änderungen Schritt zu halten und sicherzustellen, dass alle geeigneten Pakete und Ressourcen installiert sind, um Chrome zum Laufen zu bringen, aber definitiv machbar.

+1

griffith_joel, um ganz ehrlich zu sein, obwohl ich Headless Chrome funktionierte, war es zu viel Aufwand, um wirklich für echte Arbeit zu verwenden, also ging ich einfach zu PhantomJS zurück. Wie auch immer, browserless sieht cool aus und wird es überprüfen. Vielen Dank. – HartleySan

+0

Welche Art von Dingen versuchen Sie zu tun? PhantomJS ist zwar viel einfacher in Gang zu bringen, aber wenn es irgendetwas Substanzhaftes ausführt, führt es dazu, dass es abstürzt. –

+0

Grundlegende Verschrottung von Struktur und Daten aus dem DOM von Websites. Außerdem, ja, es war langsam und all das, was nervig war, aber es war, was zu der Zeit funktionierte. – HartleySan

Verwandte Themen