[PYTHON] Probieren Sie Selenium Grid mit Docker aus

Versuchen Sie, Chrome auf dem Anaconda-Image zu installieren, die Erstellung dauert jedoch noch lange. Schneiden Sie daher nur den Chrome-Teil als separates Image aus. Ich habe mich gefragt, ob es einen gibt, aber ich habe herausgefunden, dass es einen Mechanismus namens Selenium Grid gibt, der WebDriver über die REST-API betreiben kann, also habe ich es versucht.

Starten Sie das Selenium Grid

Ein Docker-Image, das Selenium Grid verwenden kann, ist offiziell freigegeben. Verwenden Sie dieses.

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

Wenn Sie mehrere Browser verwenden möchten, müssen Sie Hub und Node jedes Browsers starten. Dieses Mal möchte ich es jedoch nur mit Chrome ausprobieren, also habe ich das Image von Standalone verwendet.

docker-compose.yml


version: "3"

services:

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

Die REST-API wird an Port 4444 verfügbar gemacht. Die API für den Betrieb von WebDriver scheint "/ wd / hub" zu sein.

$ docker-compose up

Verwenden Sie Selenium Grid aus Python

Wenn Sie Selenium Grid aus Python verwenden möchten, verwenden Sie 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}')

Ich habe ein Skript geschrieben, das Google durchsucht und den Titel und die URL der Top-Ergebnisse anzeigt.

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

Recommended Posts

Probieren Sie Selenium Grid mit Docker aus
Versuchen Sie, Jupyter Hub mit Docker zu erstellen
Schaben mit Selen
Schaben mit Selen ~ 2 ~
Versuchen wir es mit gRPC mit Go und Docker
Versuchen Sie es mit Selen
Schaben mit Selen
Beginnend mit Selen
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
[Python3] [Ubuntu16] [Docker] Versuchen Sie die Gesichtserkennung mit OpenFace
TFTP-Server mit Docker
Erfolgreiches Schaben mit Selen
Versuchen Sie es mit Python.
Screenshot mit Selen (Python Edition)
Verwenden Sie Python mit Docker
Versuchen Sie SNN mit BindsNET
Proxyserver mit Docker
Hallo, Welt mit Docker
Schaben mit Selen [Python]
Versuchen Sie eine Regression mit TensorFlow
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie die Funktionsoptimierung mit Optuna
Versuchen Sie es mit TensorFlow
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Versuchen Sie die Kantenerkennung mit OpenCV
Versuchen Sie, RBM mit Chainer zu implementieren.
Versuchen Sie Google Mock mit C.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie, mit einer Shell zu programmieren!
Versuchen Sie die GUI-Programmierung mit Hy
Versuchen Sie Auto Encoder mit Pytorch
Versuchen Sie die Matrixoperation mit NumPy
Python: Arbeiten mit Firefox mit Selen
Versuchen Sie, XOR mit PyTorch zu implementieren
Versuchen Sie, CNN mit ChainerRL auszuführen
Scraping mit Selen in Python
Versuchen Sie Deep Learning mit FPGA
Implementieren Sie PyTorch + GPU mit Docker
Bereiten Sie die Python3-Umgebung mit Docker vor
Versuchen Sie, automatisch mit Selen zu twittern.
Versuchen Sie, Python mit Try Jupyter auszuführen
Erinnerungen an den Kampf mit Selen
Versuchen Sie, Parfüm mit Go zu implementieren
Schaben mit Selen + Python Teil 2
Versuchen Sie die Gesichtserkennung mit Python
Probieren Sie OpenCV mit Google Colaboratory aus
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie TensorFlow MNIST mit RNN
I-Town-Seite mit Selen abkratzen
Erstellen Sie eine Rails-Anwendung mit Docker
Versuchen Sie es mit Folium mit Anakonda
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Versuchen Sie es mit Python + Beautiful Soup
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Versuchen Sie, Tensorflow auf Docker + Anaconda auszuführen
Japanisieren Sie Matplotlib mit Alpine mit Docker
Bis Sie Jupyter in Docker starten
Einfacher Slackbot mit Docker und Errbot