it-swarm.com.de

Wie verwende ich Headless Chrome in Chrome 60 unter Windows 10?

Ich habe mir den folgenden Artikel über Headless Chrome angesehen:
https://developers.google.com/web/updates/2017/04/40/headless-chrome

Ich habe gerade ein Upgrade von Chrome auf Windows 10 auf Version 60 durchgeführt. Wenn ich jedoch einen der folgenden Befehle von der Befehlszeile aus 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/

Ich führe alle diese Befehle über den folgenden Pfad aus (den 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 abzuarbeiten, aber ich sehe nichts. Was mache ich falsch?
Vielen Dank.


Bearbeiten:

Wie Mark Rajcok bemerkt, funktioniert es, wenn Sie --enable-logging zum Befehl --dump-dom hinzufügen. 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 haben.

Daher funktionierten die folgenden zwei Befehle für mich:

"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 besteht in der Möglichkeit, durch Dump-DOMs wie PhantomJS mit DOM-Selektoren und so weiter zu gehen, aber ich denke, das ist eine andere Frage.


Edit # 2:

Ich bin vor kurzem auf eine Node-API für Headless Chrome mit dem Namen Puppeteer ( https://github.com/GoogleChrome/puppeteer gestoßen, die wirklich einfach zu bedienen ist und die ganze Leistungsfähigkeit von Headless bietet Chrom. Wenn Sie nach einer einfachen Möglichkeit suchen, Headless Chrome zu verwenden, kann ich es wärmstens empfehlen.

28
HartleySan

Wenn ich mit Chrome 61.0.3163.79 --enable-logging hinzufüge, erzeugt --dump-dom folgende 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 Headless Chrome programmatisch steuern möchten, können Sie dies mit Python3 und Selenium tun:

Installieren Sie in einem Admin-Cmd-Fenster Selenium für Python:

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

Laden Sie ChromeDriver v2.32 herunter und entpacken Sie es. Ich füge den chromedriver.exe in C:\Users\Mark ein, wo ich dieses headless.py Python-Skript stelle:

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!

Führen Sie es in einem normalen Cmd-Fenster aus:

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

Das funktioniert für mich:

start chrome --enable-logging --headless --disable-gpu --print-to-pdf=c:\misc\output.pdf https://www.google.com/

... aber nur mit "start chrome" und "--enable-logging" und mit einem Pfad (für das pdf) angegeben - und wenn der Ordner "misc" im c-Verzeichnis existiert.

Zusatz: ... der Pfad für das pdf - "c:\misc" oben - kann natürlich durch einen anderen Ordner/Verzeichnis ersetzt werden.

4
Marrix

Aktuelle Versionen (68-70) scheinen --no-sandbox zu benötigen, um laufen zu können, ohne dass sie absolut nichts tun und im Hintergrund hängen.

Die vollständigen Befehle, die ich verwende, sind:

chrome --headless --user-data-dir=tmp --no-sandbox --enable-logging --dump-dom https://www.google.com/ > file.html
chrome --headless --user-data-dir=tmp --no-sandbox --print-to-pdf=whatever.pdf https://www.google.com/

Die Verwendung von --no-sandbox ist eine ziemlich schlechte Idee, und Sie sollten diese Option nur für Websites verwenden, denen Sie vertrauen, aber dies ist leider die einzige Möglichkeit, die Funktion überhaupt zu nutzen.

--user-data-dir=... verwendet das angegebene Verzeichnis anstelle des Standardverzeichnisses, das wahrscheinlich bereits von Ihrem regulären Browser verwendet wird.

Wenn Sie jedoch versuchen, aus HTML eine PDF zu erstellen, ist dies ziemlich sinnlos, da Sie Kopf- und Fußzeile (die Text wie file:///... enthält) nicht entfernen können. Die einzig mögliche Lösung ist die Verwendung von Puppeteer .

4
blade

Du solltest gut sein. Überprüfen Sie das 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 

Bearbeiten: Führen Sie in diesem Fall noch Befehle aus, in denen sich die Chrome-Programmdatei befindet 

 C:\Program Files (x86)\Google\Chrome\Application\
1
Karl L

Wenn Sie dem Problem im Allgemeinen ausweichen möchten und einfach einen Dienst verwenden möchten, um die Arbeit für Sie zu erledigen, bin ich der Autor/Gründer von browserless , der versucht, kopfreies Chrome in einem Dienst auszuführen wie Mode. 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 durchaus machbar.

0
griffith_joel

Ich weiß, dass diese Frage für Windows ist, aber da Google diesen Beitrag als erstes Suchergebnis angibt, funktioniert Folgendes auf Mac:

Mac OS X

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --dump-dom 'http://www.google.com'

Beachten Sie, dass Sie das http MUSS setzen müssen, sonst funktioniert es nicht.

Weitere Tipps

Verwenden Sie tidy, um das HTML einzurücken (was in echten aufgeblähten Seiten sehr wünschenswert ist):

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --dump-dom 'http://www.google.com' | tidy

Sie können aufräumen mit:

brew install tidy
0