如何在Windows 10上的Chrome 60中使用Headless Chrome?

Har*_*San 42 command-line google-chrome headless-browser windows-10 google-chrome-headless

我一直在查看以下关于无头Chrome的文章:https:
//developers.google.com/web/updates/2017/04/headless-chrome

我刚刚将Windows 10上的Chrome升级到版本60,但是当我从命令行运行以下任一命令时,似乎没有任何事情发生:

chrome --headless --disable-gpu --dump-dom https://www.google.com/
chrome --headless --disable-gpu --print-to-pdf https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

我从以下路径运行所有这些命令(Windows上Chrome的默认安装路径):

C:\Program Files (x86)\Google\Chrome\Application\
Run Code Online (Sandbox Code Playgroud)

当我运行命令时,某些东西似乎处理了一秒钟,但我实际上看不到任何东西.我究竟做错了什么?
谢谢.


编辑:

正如马克Rajcok指出,如果添加--enable-logging--dump-dom命令,它的工作原理.此外,该--print-to-pdf命令在Chrome 61.0.3163.79中也可以正常工作,但您可能必须为输出文件指定不同的路径才能拥有保存它的必要权限.

因此,以下两个命令对我有用:

"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/
Run Code Online (Sandbox Code Playgroud)

我想下一步是能够像使用DOM选择器和诸如此类的PhantomJS一样逐步执行转储的DOM,但我认为这是一个单独的问题.


编辑#2:

对于它的价值,我最近遇到了一个名为Puppeteer(https://github.com/GoogleChrome/puppeteer)的无头Chrome节点API ,它非常易于使用,并提供无头Chrome的所有功能.如果您正在寻找一种使用Headless Chrome的简便方法,我强烈推荐它.

Mar*_*cok 9

使用Chrome 61.0.3163.79,如果我添加--enable-logging然后--dump-dom产生输出:

> "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>
Run Code Online (Sandbox Code Playgroud)

如果你想以编程方式控制无头Chrome,这里有一种方法可以用Python3和Selenium来实现:

在Admin cmd窗口中,安装Selenium for Python:

C:\Users\Mark> pip install -U selenium
Run Code Online (Sandbox Code Playgroud)

下载 ChromeDriver v2.32并将其解压缩.我把chromedriver.exein C:\Users\Mark,这是我放这个headless.pyPython脚本的地方:

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 Code Online (Sandbox Code Playgroud)

在普通的cmd窗口中运行它:

C:\Users\Mark> python headless.py
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" ...
...  lots and lots of stuff here ...
...</body></html>
Run Code Online (Sandbox Code Playgroud)

  • @HartleySan,我发现它可以添加`--enable-logging`.我更新了答案. (2认同)

Mar*_*rix 8

这对我有用:

start chrome --enable-logging --headless --disable-gpu --print-to-pdf=c:\misc\output.pdf https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

...,但仅使用“ start chrome”和“ --enable-logging”,并指定路径(对于pdf),并且-如果c目录中存在文件夹“ misc”。

另外:... pdf的路径-上面的“ c:\ misc”-当然可以用任何其他文件夹/目录代替。


bla*_*ade 7

当前版本(68-70)似乎要求--no-sandbox运行,没有它,它们什么也不做,并会挂在后台。

我使用的完整命令是:

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/
Run Code Online (Sandbox Code Playgroud)

使用--no-sandbox是一个非常糟糕的主意,您应该仅将其用于您信任的网站,但遗憾的是,这是使它完全起作用的唯一方法。

--user-data-dir=... 使用指定的目录,而不是默认目录(您的常规浏览器可能已在使用该目录)。

但是,如果您尝试从HTML制作PDF,那么这是相当无用的,因为您无法删除页眉和页脚(包含类似的文本file:///...),唯一可行的解​​决方案是使用Puppeteer

  • 谢谢你提供的信息,刀片。老实说,我觉得 Headless Chrome 仍然没什么用,但也许我只是还没有对其进行足够的探索。或者更确切地说,我仍然没有找到 PhantomJS 的可行替代品。 (2认同)

Kar*_*l L 3

你应该很好。在Chrome版本目录下查看

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78
Run Code Online (Sandbox Code Playgroud)

对于命令

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

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78\output.pdf 
Run Code Online (Sandbox Code Playgroud)

编辑:在这种情况下,仍然执行 chrome 可执行文件所在的命令

 C:\Program Files (x86)\Google\Chrome\Application\
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,有些事情“发生”,但没有证据表明它 (3认同)
  • 我现在明白你在说什么,但是当我从以下路径执行以下命令时,我在`60.0.3112.78`下或任何地方都没有任何output.pdf文件:`chrome --headless --disable-gpu --print-to-pdf https://www.google.com/`; C:\Program Files (x86)\Google\Chrome\Application\ (2认同)