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

相關問題