Cette fois, je vais essayer de faire fonctionner Headless Chrome avec Selenium.
Le code est résumé dans GitHub.
Un mode qui exploite Chrome introduit à partir de Google Chrome 59 sans afficher l'écran. En conséquence, il peut être utilisé dans un environnement serveur sans tests automatiques ni interface utilisateur.
Cette fois, j'utiliserai la bibliothèque suivante
** Les pilotes installés sont enregistrés sous ~ / .wdm / par défaut
Installez la dernière version de la pré-version, selene. Les bibliothèques ci-dessus sont incluses en même temps que selene est installé. De plus, six dépend pour une raison quelconque, mais je ne l'ai pas saisi ensemble, je vais donc l'installer séparément.
pip install selene --pre pip install six
C'est une simple recherche Google et des captures d'écran des résultats.
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()
Le résultat de l'exécution est le suivant.
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)
Le résultat de l'exécution est le suivant. Les résultats Python sont omis.
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
Recommended Posts