14

我一直在看有关无头铬下面的文章:
https://developers.google.com/web/updates/2017/04/headless-chrome如何在Windows 10的Chrome 60中使用无头Chrome?

我刚刚升级Chrome浏览器在Windows 10到60版,但是当我运行或者在命令行下面的命令,似乎没有任何发生:

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

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

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

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


编辑:

如前所述马克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选择和诸如此类的东西PhantomJS倾销DOM,但我想这是一个独立的题。

+1

刚刚在Chrome 61.0.3163.79中试过,但仍无法正常工作。 – HartleySan

+1

我一直都有同样的问题。这对你来说可能是一个不同的问题,但在我的情况下,这是一个在程序文件目录中写入文件的相关权限的问题。同样,只尝试C:\ output.pdf也不行,但是c:\ users \ username \ output.pdf可以正常工作。同样,如果您更改文件夹'... application/chrome'上的权限,就可以像--print-to-pdf一样正常工作,无需进一步参数。 – Tim

+0

这也适用:'--screenshot = C:\ Temp \ screenshot.png' – vladkras

回答

1

你应该很好。查看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 

编辑: 仍执行命令,其中铬可执行文件,在这种情况下

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

我有那个文件夹,但里面没有chrome可执行文件。我得到以下错误:''chrome'不被识别为内部或外部命令,可操作程序或批处理文件。' – HartleySan

+0

是的,仍然在chrome可执行文件位于'C:\ Program Files(x86) \ Google \ Chrome \ Application' 我发现该文件出现在'C:\ Program Files文件(x86)\ Google \ Chrome \ Application \ 60.0.3112.78 \'有意义吗? – version2

+1

我明白你现在在说什么,但是当我从下面的路径执行下面的命令时,我没有任何output.pdf文件在'60.0.3112.78'或任何地方:'chrome --headless --disable- gpu --print-to-pdf https:// www.google.com /'; C:\ Program Files文件(x86)\谷歌\铬\应用程序\ – HartleySan

3

有了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> 

如果您希望通过编程控制无头Chrome,请与Python3和硒做到这一点的一种方法:

在管理员CMD窗口,为Python安装硒:

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

ChromeDriver v2.32并提取它。我把chromedriver.exeC:\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> 
+0

马克Rajcok,这可能工作,但我不打算全部那是为了测试它。我对你的回答没有任何反对意见,只是如果Chrome现在可以真正作为无头浏览器工作,那么你就不需要经历所有这些工作才能正常工作。如果在没有任何调整/外部程序的情况下它不能立即工作,那么我会继续使用PhantomJS。谢谢。如果其他人想要测试这个解决方案并且让你满意,那很好。谢谢。 – HartleySan

+2

@HartleySan,我发现它的作品,如果你添加'--enable-logging'。我更新了答案。 –

+0

一个小问题:为避免必须将脚本和chromedriver.exe可执行文件放置在同一文件夹中,请将chromedriver.exe放置在%PATH%($ env:PATH,如果使用PowerShell)的某个位置。 –

0

如果你想躲闪的问题,一般情况下,并且只是使用某种服务为您完成工作,我是browserless的作者/创始人,它试图以类似服务的方式解决运行无头Chrome的问题。除此之外,要跟上更改并确保安装所有适当的软件包和资源以使Chrome运行非常困难,但绝对可行。

+1

griffith_joel,尽管我能够让Headless Chrome工作,但实际上用于实际工作太费劲了,所以我最终回到了PhantomJS。无论如何,无浏览器看起来很酷,并会检查出来。谢谢。 – HartleySan

+0

你想做什么样的事情? PhantomJS确实很容易上手,但执行任何物质往往会导致其崩溃。 –

+0

从站点的DOM的结构和数据的基本报废。另外,是的,这很慢,所有这些都很烦人,但这是当时的工作。 – HartleySan