Google chrome 如何在Windows 10上的Chrome 60中使用无头Chrome?

Google chrome 如何在Windows 10上的Chrome 60中使用无头Chrome?,google-chrome,command-line,windows-10,headless-browser,google-chrome-headless,Google Chrome,Command Line,Windows 10,Headless Browser,Google Chrome Headless,我一直在看以下关于无头铬的文章: 我刚刚将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/ 我从以下路径(Windows上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/
我从以下路径(Windows上Chrome的默认安装路径)运行所有这些命令:

当我运行这些命令时,有些东西似乎在处理一秒钟,但实际上我什么也看不到。我做错了什么?
谢谢


编辑:

正如Mark 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/
我想下一步是能够使用DOM选择器和诸如此类的东西逐步通过转储的DOM,就像幻影一样,但我想这是一个单独的问题


编辑#2:


值得一提的是,我最近发现了一个名为puppeter()的无头Chrome节点API,它非常易于使用,并提供了无头Chrome的所有功能。如果您正在寻找一种使用无头铬合金的简便方法,我强烈推荐。

您应该很好。在Chrome版本目录下进行检查

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78
为了命令

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

C:\Program Files (x86)\Google\Chrome\Application\60.0.3112.78\output.pdf 
编辑: 在本例中,仍然在chrome可执行文件所在的位置执行命令

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

对于Chrome 61.0.3163.79,如果我添加
--启用日志记录
,则
--转储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>
ChromeDriver v2.32并将其提取。我把
chromedriver.exe
放在
C:\Users\Mark
中,我把这个
headless.py
Python脚本放在这里:

从selenium导入webdriver
options=webdriver.ChromeOptions()
选项。添加参数(“headless”)#如果要查看浏览器弹出窗口,请删除此行
driver=webdriver.Chrome(Chrome\u options=options)
司机,上车https://www.google.com/')
打印(驱动程序页\源)
driver.quit()#不要错过这个,否则chromedriver.exe将继续运行!
在普通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>
C:\Users\Mark>python headless.py

如果你想回避这个问题,而只是使用某种服务来为你做这项工作,我是该网站的作者/创始人,该网站试图以一种类似服务的方式解决无头Chrome的运行问题。除此之外,要跟上这些变化并确保安装了所有适当的软件包和资源以使Chrome运行是非常困难的,但肯定是可行的。

这对我来说很有用:

start chrome --enable-logging --headless --disable-gpu --print-to-pdf=c:\misc\output.pdf https://www.google.com/
。。。但是只有使用“启动chrome”和“-enable logging”以及指定的路径(用于pdf),并且如果c目录上存在文件夹“misc”


加:。。。上面的pdf路径-“c:\misc”当然可以替换为任何其他文件夹/dir。

我知道这个问题是针对Windows的,但由于Google将此帖子作为第一个搜索结果,下面是在Mac上使用的方法:

MacOSX 注意:您必须将
http
放入,否则它将无法工作

进一步提示 要缩进html(这在膨胀的真实页面中非常理想),请使用
tidy

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --dump-dom 'http://www.google.com' | tidy
您可以通过以下方式保持整洁:

brew install tidy
当前的版本(68-70)似乎需要
——没有沙箱才能运行,没有沙箱,它们什么也不做,挂在后台

我使用的完整命令有:

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/
使用
--no sandbox
是一个非常糟糕的主意,你应该只在你信任的网站上使用它,但遗憾的是,这是让它工作的唯一方法

--user data dir=…
使用指定的目录,而不是默认目录,该目录可能已被常规浏览器使用


但是,如果您试图从HTML生成PDF,那么这是相当无用的,因为您无法删除页眉和页脚(包含
file:///...
)唯一可行的解决方案就是使用。

我有那个文件夹,但里面没有chrome可执行文件。我收到以下错误:
'chrome'未被识别为内部或外部命令、可操作程序或批处理文件。
是的,仍然在chrome可执行文件位于
C:\program Files(x86)\Google\chrome\Application中的上下文中执行。
我发现该文件显示在
C:\program Files(x86)中\Google\Chrome\Application\60.0.3112.78\
有意义吗?我现在明白你的意思,但是当我从以下路径执行以下命令时,我在
60.0.3112.78
下或任何地方都没有任何output.pdf文件:
Chrome--headless--disable gpu--print to pdfhttps://www.google.com/
;C:\Program Files(x86)\Google\Chrome\Application\I也有同样的问题,有些事情“发生了”,但没有证据表明是这样的,只是在Chrome 61.0.3163.79中尝试了一下,但仍然不起作用。我整个晚上都在遇到同样的问题。对您来说,这可能是一个不同的问题,但在我的情况下,这是一个拥有在program files目录中写入文件的相关权限的问题。同样,尝试C:\output.pdf也不起作用,但是C:\users\username\output.pdf也可以。同样,如果您更改文件夹“…application/chrome”的权限,它的工作原理与--print to pdf一样,无需进一步的参数。这同样有效:
--screenshot=C:\Temp\screenshot.png
Mark Rajcok,这可能有效,但我不打算做所有这些来测试它。我对你的回答没有异议,只是如果Chrome现在真的可以作为一个无头浏览器使用,你不需要经历所有这些才能让它工作。如果没有任何调整/外部程序,它不能立即工作,那么我将继续使用PhantomJS。谢谢如果其他人想测试这个解决方案并投票给你,那没关系。谢谢你。@HartleyS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --dump-dom 'http://www.google.com' | tidy
brew install tidy
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/