我一直在看下面这篇关于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/
我从以下路径运行所有这些命令(Windows上Chrome的默认安装路径):
C:\Program Files (x86)\Google\Chrome\Application\
当我运行这些命令时,一些东西似乎会处理一秒钟,但我实际上什么也看不到。我做错了什么?
谢谢。
编辑:
正如Mark Rajcok所指出的,如果您在--dump-dom
命令中添加--enable-logging
,它就可以工作。此外,--print-to-pdf
命令在Chrome61.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选择器和诸如此类的东西遍历像PhantomJS一样的转储DOM,但我认为这是一个单独的问题。
编辑#2:
无论如何,我最近偶然发现了一个用于无头Chrome的Node API,叫做Puppeteer (https://github.com/GoogleChrome/puppeteer),它非常容易使用,并且提供了无头Chrome的所有功能。如果你正在寻找一种简单的方式使用Headless Chrome,我强烈推荐它。
发布于 2018-05-14 00:24:16
这对我来说很有效:
start chrome --enable-logging --headless --disable-gpu --print-to-pdf=c:\misc\output.pdf https://www.google.com/
..。但是只有在"start chrome“和"--enable-logging”和指定的路径(用于pdf)的情况下,如果文件夹"misc“存在于c目录中。
附加内容:...pdf的路径-上面的"c:\misc“-当然可以替换为任何其他文件夹/目录。
发布于 2017-09-07 12:02:37
使用Chrome61.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>
如果你想以编程方式控制无头Chrome,这里有一种使用Python3和Selenium的方法:
在Admin cmd窗口中,安装Selenium for Python:
C:\Users\Mark> pip install -U selenium
Download ChromeDriver v2.32并解压缩它。我把chromedriver.exe
放在C:\Users\Mark
中,也就是我放这个headless.py
Python脚本的地方:
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!
在普通的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>
发布于 2018-08-09 15:37:24
当前的版本(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/
使用--no-sandbox
是一个非常糟糕的想法,你应该只在你信任的网站上使用它,但遗憾的是,这是让它工作的唯一方法。
--user-data-dir=...
使用指定的目录,而不是默认的目录,您的常规浏览器可能已经在使用该目录。
然而,如果你想从超文本标记语言生成一个PDF,那么这是非常无用的,因为你不能删除页眉和页脚(包含像file:///...
这样的文本),唯一可行的解决方案就是使用Puppeteer。
https://stackoverflow.com/questions/45364102
复制相似问题