[PYTHON] J'ai essayé d'utiliser du sélénium avec du chrome sans tête

Cette fois, je vais essayer de faire fonctionner Headless Chrome avec Selenium.

Le code est résumé dans GitHub.

Postscript

Environnement d'exécution

Qu'est-ce que Headless Chrome?

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.

Préparation

  1. Installez la dernière version Chrome
  2. Téléchargez Python 3.6 (recommandé pour utiliser virtualenv)
  3. Installez des bibliothèques dépendantes telles que Selenium

Bibliothèque dépendante de Python

Cette fois, j'utiliserai la bibliothèque suivante

** Les pilotes installés sont enregistrés sous ~ / .wdm / par défaut

Installation de bibliothèque dépendante

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

Exemple de code

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.

result.png

Parallélisation de l'exemple de code

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. Google.png

Selenium.png

Lien de référence

Recommended Posts

J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé d'utiliser Headless Chrome de Selenium
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé le web scraping en utilisant python et sélénium
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'ai essayé DBM avec Pylearn 2 en utilisant des données artificielles
J'ai essayé d'utiliser la base de données (sqlite3) avec kivy
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai essayé Learning-to-Rank avec Elasticsearch!
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé le clustering avec PyCaret
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
J'ai essayé d'utiliser git inspector
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé un RPA simple pour me connecter avec du sélénium
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
[Python scraping] J'ai essayé la recherche Google Top10 en utilisant Beautifulsoup et sélénium
J'ai essayé la reconnaissance de caractères manuscrits des caractères runiques avec CNN en utilisant Keras
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé de résumer des phrases avec summpy
J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé webScraping avec python.
J'ai essayé de déplacer de la nourriture avec SinGAN