[PYTHON] Essayez Selenium Grid avec Docker

Essayez d'installer Chrome sur l'image Anaconda, mais la construction prend encore beaucoup de temps, alors découpez uniquement la partie Chrome en tant qu'image distincte. Quand je me demandais s'il y en avait un, j'ai découvert qu'il existe un mécanisme appelé Selenium Grid qui peut faire fonctionner WebDriver via l'API REST, alors je l'ai essayé.

Démarrer Selenium Grid

Une image Docker qui peut utiliser Selenium Grid est officiellement publiée, alors utilisez-la.

SeleniumHQ/docker-selenium: Docker images for Selenium Grid Server (Standalone, Hub, and Nodes).

Si vous souhaitez utiliser plusieurs navigateurs, vous devez lancer respectivement Hub et Node de chaque navigateur, mais cette fois, je veux juste l'essayer avec Chrome, j'ai donc utilisé l'image de Standalone.

docker-compose.yml


version: "3"

services:

  chrome:
    image: selenium/standalone-chrome
    ports:
      - 4444:4444
    volumes:
      - /dev/shm:/dev/shm

L'API REST est exposée sur le port 4444. L'API pour faire fonctionner WebDriver semble être / wd / hub.

$ docker-compose up

Utilisez Selenium Grid de Python

Si vous souhaitez utiliser Selenium Grid depuis Python, utilisez selenium.webdriver.Remote.

$ pip3 install selenium

main.py


import sys
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


def search(driver, query):
    driver.get('https://google.com/')

    q = driver.find_element_by_name('q')
    q.send_keys(query)
    q.submit()

    r = driver.find_element_by_class_name('g').find_element_by_class_name('r')
    title = r.find_element_by_tag_name('h3').text
    url = r.find_element_by_tag_name('a').get_attribute('href')

    return title, url


if __name__ == '__main__':
    query = ' '.join(sys.argv[1:])
    options = {
        'command_executor': 'http://localhost:4444/wd/hub',
        'desired_capabilities': DesiredCapabilities.CHROME,
    }
    with webdriver.Remote(**options) as driver:
        title, url = search(driver, query)
        print(f'{title}\n{url}')

J'ai écrit un script qui recherche Google et affiche le titre et l'URL des meilleurs résultats.

$ python3 main.py qiita
Qiita
https://qiita.com/

Recommended Posts

Essayez Selenium Grid avec Docker
Essayez de créer Jupyter Hub avec Docker
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Essayons gRPC avec Go et Docker
Essayez d'utiliser Selenium
Grattage avec du sélénium
Commençant par Selenium
Essayez d'exécuter Google Chrome avec Python et Selenium
[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace
Serveur TFTP avec Docker
Grattage réussi avec Selenium
Essayez de gratter avec Python.
ScreenShot avec Selenium (édition Python)
Utiliser python avec docker
Essayez SNN avec BindsNET
Serveur proxy avec Docker
Bonjour le monde avec Docker
Grattage avec du sélénium [Python]
Essayez la régression avec TensorFlow
Installez le sélénium sur votre Mac et essayez-le avec python
Essayez de défier le sol par récursif
Essayez l'optimisation des fonctions avec Optuna
Essayez l'apprentissage en profondeur avec TensorFlow
Essayez d'utiliser PythonTex avec Texpad.
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Essayez la détection des bords avec OpenCV
Essayez d'implémenter RBM avec chainer.
Essayez Google Mock avec C
Essayez d'utiliser matplotlib avec PyCharm
Essayez de programmer avec un shell!
Essayez la programmation GUI avec Hy
Essayez Auto Encoder avec Pytorch
Essayez l'opération matricielle avec NumPy
Python: travailler avec Firefox avec du sélénium
Essayez d'implémenter XOR avec PyTorch
Essayez d'exécuter CNN avec ChainerRL
Grattage avec du sélénium en Python
Essayez le Deep Learning avec FPGA
Implémenter le GPU PyTorch + avec Docker
Préparer l'environnement python3 avec Docker
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'exécuter Python avec Try Jupyter
Souvenirs de combats avec Selenium
Essayez d'implémenter le parfum avec Go
Grattage avec Selenium + Python Partie 2
Essayez la reconnaissance faciale avec Python
Essayez OpenCV avec Google Colaboratory
Essayez le machine learning à la légère avec Kaggle
Essayez TensorFlow MNIST avec RNN
Gratter la page i-town avec du sélénium
Créer une application Rails avec Docker
Essayez d'utiliser le folium avec anaconda
Essayez le Deep Learning avec les concombres FPGA-Select
Essayez de gratter avec Python + Beautiful Soup
Renforcer l'apprentissage 13 Essayez Mountain_car avec ChainerRL.
Essayez d'exécuter tensorflow sur Docker + anaconda
Japaneseize Matplotlib avec Alpine en utilisant Docker
Jusqu'à ce que vous démarriez Jupyter dans Docker
Easy Slackbot avec Docker et Errbot