だから私はSeleniumを使っていくつかのことを試しているのですが、本当に速くしたいと思っています。
したがって、ヘッドレスchromeで実行すると、スクリプトが高速になると思います。
まず、その仮定は正しいですか、それともヘッドレスドライバーでスクリプトを実行しても問題ありませんか?
とにかく私はまだそれをヘッドレスで動作させるようにしたいのですが、どういうわけかできません、私は別のことを試しました、そしてほとんどがここの10月のアップデートで述べられているように動作することを示唆しました
ChromeDriverを開始するように設定する方法Chrome Seleniumを介してヘッドレスモードのブラウザ?
しかし、それを試してみると、奇妙なコンソール出力が出て、それでも動作しないようです。
どんなチップも感謝します。
クロムヘッドレスを実行するには、--headless
を介してchrome_options.add_argument
を追加するだけです。つまり、
from Selenium import webdriver from Selenium.webdriver.chrome.options import Options
chrome_options = Options()
#chrome_options.add_argument("--disable-extensions")
#chrome_options.add_argument("--disable-gpu")
#chrome_options.add_argument("--no-sandbox) # linux only
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
start_url = "https://duckgo.com"
driver.get(start_url)
print(driver.page_source.encode("utf-8"))
driver.quit()
# b'<!DOCTYPE html><html xmlns="http://www....
つまり、ヘッドレスchromeで実行すると、スクリプトが高速になると思います
chrome --disable-extensions
や--disable-gpu
などのオプションを使用してベンチマークしてみてください。
参照: headless-chrome
注:現在、chrome headless、runningshouldshould running --disable-gpu flag if your Windowsで実行されています。 crbug.com/737678 を参照してください。
Linux環境を使用している場合は、--no-sandbox
だけでなく、特定のウィンドウサイズの設定。 --no-sandbox
フラグは、ユーザーコンテナを適切に設定した場合、Windowsでは必要ありません。
使用する --disable-gpu
Windowsのみ。他のプラットフォームでは必要ありません。 --disable-gpu
フラグは、いくつかのバグの一時的な回避策です。
//Headless chrome browser and configure
WebDriverManager.chromedriver().setup();
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("disable-gpu");
// chromeOptions.addArguments("window-size=1400,2100"); // Linux should be activate
driver = new ChromeDriver(chromeOptions);
コンテナ化されたChromeをインストールして実行します。
docker pull Selenium/standalone-chrome
docker run --rm -d -p 4444:4444 --shm-size=2g Selenium/standalone-chrome
webdriver.Remote
を使用して接続:
driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')
from time import sleep
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path="./chromedriver", options=chrome_options)
url = "https://stackoverflow.com/questions/53657215/running-Selenium-with-headless-chrome-webdriver"
driver.get(url)
sleep(5)
h1 = driver.find_element_by_xpath("//h1[@itemprop='name']").text
print(h1)
次に、ローカルマシンでスクリプトを実行します
➜ python script.py
Running Selenium with Headless Chrome Webdriver
動作しており、ヘッドレスChromeを使用しています。
Todo(ヘッドレスサーバーDebian Linux 9.4でテスト済み):
これを行う:
# install chrome
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
echo "deb [Arch=AMD64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
apt-get -y update
apt-get -y install google-chrome-stable
# install chrome driver
wget https://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.Zip
unzip chromedriver_linux64.Zip
mv chromedriver /usr/bin/chromedriver
chown root:root /usr/bin/chromedriver
chmod +x /usr/bin/chromedriver
Seleniumをインストールします。
pip install Selenium
これを実行するPythonコード:
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("no-sandbox")
options.add_argument("headless")
options.add_argument("start-maximized")
options.add_argument("window-size=1900,1080");
driver = webdriver.Chrome(chrome_options=options, executable_path="/usr/bin/chromedriver")
driver.get("https://www.example.com")
html = driver.page_source
print(html)