首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Windows 10的Chrome 60中使用Headless Chrome?

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

Stack Overflow用户
提问于 2017-07-28 10:54:00
回答 7查看 35K关注 0票数 56

我一直在看下面这篇关于Headless Chrome的文章:

https://developers.google.com/web/updates/2017/04/headless-chrome

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

代码语言:javascript
运行
复制
chrome --headless --disable-gpu --dump-dom https://www.google.com/
chrome --headless --disable-gpu --print-to-pdf https://www.google.com/

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

代码语言:javascript
运行
复制
C:\Program Files (x86)\Google\Chrome\Application\

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

谢谢。

编辑:

正如Mark Rajcok所指出的,如果您在--dump-dom命令中添加--enable-logging,它就可以工作。此外,--print-to-pdf命令在Chrome61.0.3163.79中也同样有效,但您可能必须为输出文件指定一个不同的路径,以便拥有保存它所需的权限。

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

代码语言:javascript
运行
复制
"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,我强烈推荐它。

EN

回答 7

Stack Overflow用户

发布于 2018-05-14 00:24:16

这对我来说很有效:

代码语言:javascript
运行
复制
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“-当然可以替换为任何其他文件夹/目录。

票数 11
EN

Stack Overflow用户

发布于 2017-09-07 12:02:37

使用Chrome61.0.3163.79,如果我添加--enable-logging,那么--dump-dom会产生输出:

代码语言:javascript
运行
复制
> "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:

代码语言:javascript
运行
复制
C:\Users\Mark> pip install -U selenium

Download ChromeDriver v2.32并解压缩它。我把chromedriver.exe放在C:\Users\Mark中,也就是我放这个headless.py Python脚本的地方:

代码语言:javascript
运行
复制
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窗口中运行:

代码语言:javascript
运行
复制
C:\Users\Mark> python headless.py
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" ...
...  lots and lots of stuff here ...
...</body></html>
票数 9
EN

Stack Overflow用户

发布于 2018-08-09 15:37:24

当前的版本(68-70)似乎需要--no-sandbox才能运行,如果没有它,它们什么都不做,就会挂在后台。

我使用的完整命令是:

代码语言:javascript
运行
复制
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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45364102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档