私はpythonスクリプトをweb-scrapeに取り組んでおり、Chromedriverをパッケージの1つとして使用する道を進んでいます。これをポップアップウィンドウなしでバックグラウンドで動作させたい。私はchromedriverでオプション「headless」を使用していますが、ブラウザウィンドウを表示しないという点で仕事をしているようですが、まだ.exeファイルが実行されています。私が話していることのスクリーンショットを見てください。 スクリーンショット
これは、ChromeDriverを開始するために使用しているコードです。
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
私がやろうとしたことは、オプションのウィンドウサイズを0x0に変更することですが、.exeファイルがまだポップアップしているので、それが何をしたのかわかりません。
私はこれをどのように行うことができますか?
私はPython 2.7 FYIを使用しています
だから私のコードを修正した後:
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('--disable-gpu')
options.add_argument('--headless')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
スクリプトを実行すると、.exeファイルが引き続き表示されます。これにより、「GPUプロセスを起動できませんでした」という余分な出力が削除されました。
うまくいったのは、.batファイルを使用してPythonスクリプトを実行することです
だから基本的に、
テキストエディターを開き、次のコードをダンプします(もちろんスクリプトを編集します)
c:\ python27\python.exe c:\ SampleFolder\ThisIsMyScript.py%*
.txtファイルを保存し、拡張子を.batに変更します
そのため、これでコマンドプロンプトでスクリプトが開かれ、ChromeDriverは画面の前面に飛び出して問題を解決せずにこのウィンドウ内で動作しているようです。
次のようになります。
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu') # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
これはPython 3.6を使用して機能しますが、2.7でも機能すると確信しています。
pdate 2018-10-26:最近はこれを行うことができます:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
Selenium Client 3.11.x、ChromeDriver v2.38およびGoogle Chrome v65.0.3325.181 inヘッドレスモードでは、次の点を考慮する必要があります:
--headless
を追加する必要があります。--disable-gpu
--disable-gpu
フラグはLinux SystemsおよびMacOSでは不要です。--disable-gpu
フラグはWindows Systemsでも不要になります。start-maximized
は、最大化Viewportに必要です。OSセキュリティモデルをバイパスするには、引数--no-sandbox
を追加する必要がある場合があります。
サンプルWindowsコードブロック:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # Bypass OS security model
options.add_argument('--disable-gpu') # applicable to windows os only
options.add_argument('start-maximized') #
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized on Windows OS")
サンプルLinuxコードブロック:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # # Bypass OS security model
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path='/path/to/chromedriver')
driver.get("http://google.com/")
print ("Headless Chrome Initialized on Linux OS")
Google Chrome Browserをで呼び出すヘッドレスモードメソッドを使用できるようになったことで、プログラム的にはるかに簡単になりました set_headless(headless=True)
次のように:
ドキュメンテーション :
set_headless(headless=True)
Sets the headless argument
Args:
headless: boolean value indicating to set the headless option
サンプルコード:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.set_headless(headless=True)
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized")
driver.quit()
注:
--disable-gpu
引数は内部的に実装されています。
ヘッドレスモードでChromeブラウザを呼び出すには、次のようにOptions()
クラスを介して--headless
プロパティを設定するだけです。
サンプルコード:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized")
driver.quit()
pythonを使用してSeleniumでプログラムでFirefoxをヘッドレスにする方法
Sandbox ストーリーへのリンクです。
とにかく.exeが実行されます。 Googleによると-「ヘッドレスモードで実行します。つまり、UIまたはディスプレイサーバーに依存せずに実行します。」
コマンドライン引数の前にダッシュを2つ追加する、つまりoptions.add_argument('--headless')
ヘッドレスモードでは、GPUを無効にすることも推奨されます。つまり、options.add_argument('--disable-gpu')