Dieses Mal werde ich versuchen, Headless Chrome mit Selenium zu betreiben.
Der Code ist in GitHub zusammengefasst.
Ein Modus, der Chrome aus Google Chrome 59 ausführt, ohne den Bildschirm anzuzeigen. Infolgedessen kann es in einer Serverumgebung ohne automatische Tests und Benutzeroberfläche verwendet werden.
Dieses Mal werde ich die folgende Bibliothek verwenden
** Installierte Treiber werden standardmäßig unter ~ / .wdm / gespeichert
Installieren Sie die neueste Version der Vorabversion, Selene. Die oben genannten Bibliotheken sind gleichzeitig mit der Installation von Selene enthalten. Außerdem ist sechs aus irgendeinem Grund abhängig, aber ich habe es nicht zusammen eingegeben, daher werde ich es separat installieren.
pip install selene --pre pip install six
Es ist eine einfache Google-Suche und Screenshots der Ergebnisse.
sample_selene.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selene.driver import SeleneDriver
from webdriver_manager.chrome import ChromeDriverManager
# run chrome headless
options = Options()
options.add_argument('--headless')
# install chromedriver if not found and start chrome
driver = SeleneDriver.wrap(webdriver.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options))
# search 'python' in google
driver.get('https://www.google.co.jp/')
input = driver.find_element_by_name('q')
input.send_keys('Python')
input.send_keys(Keys.RETURN)
# save screen shot
driver.save_screenshot('result.png')
driver.quit()
Das Ausführungsergebnis ist wie folgt.
sample_selene_parallel.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selene.driver import SeleneDriver
from webdriver_manager.chrome import ChromeDriverManager
from joblib import Parallel, delayed
# search 'keyword' in google
def google(url, keyword):
# run chrome headless
options = Options()
options.add_argument('--headless')
driver = SeleneDriver.wrap(webdriver.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options))
driver.get(url)
input = driver.find_element_by_name('q')
input.send_keys(keyword)
input.send_keys(Keys.RETURN)
# save screen shot
driver.save_screenshot(keyword + '.png')
driver.quit()
url = 'https://www.google.co.jp/'
keywords = ['Python', 'Google', 'Selenium']
# n_jobs=-1 means use all of the resources you can`
Parallel(n_jobs=-1)(delayed(google)(url,keyword) for keyword in keywords)
Das Ausführungsergebnis ist wie folgt. Python-Ergebnisse werden weggelassen.
https://developers.google.com/web/updates/2017/04/headless-chrome
https://github.com/yashaka/selene
https://github.com/SergeyPirogov/webdriver_manager
http://qiita.com/orangain/items/db4594113c04e8801aad