2012-03-19 53 views
11

這個問題描述了我的結論,研究了在Python中創建無頭Chrome實例的可用選項,並要求確認或描述「更好方式」的資源。在Python中創建無頭Chrome實例

從我所看到的看來,在Python應用程序中開始使用Chrome的無頭實例的最快捷方式是使用CEF(http://code.google.com/p/chromiumembedded/)和CEFPython(http://code.google.com/p/cefpython/)。 CEFPython似乎爲時過早,所以使用它可能意味着需要進一步的定製,然後才能加載加載網頁(和所需文件)的無頭Chrome實例,解析完成的DOM,然後讓我從Python運行任意JS。

我是否錯過了其他更成熟的項目或者會讓我更容易?

+0

哪個平臺? – Marcin 2012-03-19 19:16:03

+0

爲什麼你需要一個無頭的Chrome實例? – 2012-03-19 19:26:25

+0

@Marcin,我在Windows 7上開發,但將作爲Ubuntu上的網站發佈應用程序。 – Trindaz 2012-03-19 19:26:53

回答

9
+1

結合http://www.youtube.com/watch?v=DL7gyuqkzzU,這正是我所需要的 – Trindaz 2012-03-19 20:28:02

+2

要總結youtube,您需要:「 from pyvirtualdisplay import Display; display = Display(visible = 0,size =(1024,768)); display.start()「 – spookylukey 2012-06-04 17:35:44

0

casperjs是一具無頭WebKit的,但它不會給你python綁定,我知道的;它似乎是面向命令行的,但這並不意味着你不能以滿足你的要求的方式從python運行它。當你運行casperjs時,你提供了一個你要執行的javascript的路徑;所以你需要從Python發出。

但所有這一切,我提出casperjs,因爲它似乎滿足輕巧,無頭的要求非常好。

+0

Casperjs是PhantomJS的一個測試框架,它是一個無頭QtWebkit。它允許您通過REST API進行通信。 – 2012-04-25 09:09:10

+0

糟糕...這是正確的。 – sethcall 2012-04-25 10:27:41

2

雖然我的CasperJS作者,我邀請您來看看Ghost.py用Python編寫的 WebKit的Web客戶端。

儘管CasperJS深受啓發,但它並不基於PhantomJS - 它仍然使用PyQt綁定和Webkit。

+1

CasperJS看起來很棒* – Trindaz 2012-05-30 22:24:34

0

我使用它來獲取驅動程序:

def get_browser(storage_dir, headless=False): 
    """ 
    Get the browser (a "driver"). 

    Parameters 
    ---------- 
    storage_dir : str 
    headless : bool 

    Results 
    ------- 
    browser : selenium webdriver object 
    """ 
    # find the path with 'which chromedriver' 
    path_to_chromedriver = '/usr/local/bin/chromedriver' 

    from selenium.webdriver.chrome.options import Options 
    chrome_options = Options() 
    if headless: 
     chrome_options.add_argument("--headless") 
    chrome_options.add_experimental_option('prefs', { 
     "plugins.plugins_list": [{"enabled": False, 
            "name": "Chrome PDF Viewer"}], 
     "download": { 
      "prompt_for_download": False, 
      "default_directory": storage_dir, 
      "directory_upgrade": False, 
      "open_pdf_in_system_reader": False 
     } 
    }) 

    browser = webdriver.Chrome(path_to_chromedriver, 
           chrome_options=chrome_options) 
    return browser 

通過切換headless參數,你可以看它與否。

7

這個問題是5歲,現在和當時它是使用Python運行無頭鉻一個很大的挑戰,但值得慶幸的是:

從版本59,在2017年6月發佈開始,Chrome瀏覽器自帶與無頭驅動,這意味着我們可以在非圖形服務器環境中使用它,並運行測試,而不需要頁面可視化渲染等,這節省了大量的時間和內存的測試或刮。設置硒,這是非常容易的:

(我假設你已經安裝了硒和鉻司機):

from selenium import webdriver 

#set a headless browser 
options = webdriver.ChromeOptions() 
options.add_argument('headless') 
browser = webdriver.Chrome(chrome_options=options) 

,現在你的鑲邊將headlessly運行,如果從最後一行取出選項,它會顯示你的瀏覽器。

+0

謝謝!這工作完美! – M4cJunk13 2018-01-07 00:55:14