Heim  >  Artikel  >  Backend-Entwicklung  >  Selenium-Python und Docker

Selenium-Python und Docker

WBOY
WBOYOriginal
2024-08-27 06:02:32579Durchsuche

Selenium python and docker

Hallo, ich zeige, wie ich Selenium (oder undetected_chromedriver) in einem Docker-Container verwende.


I - Docker-Datei

Ich verwende ein Docker-Python-Image und füge Chromdriver und Chromium hinzu, um eine Website zu durchsuchen.

Der erste Schritt besteht darin, die Datei „requirements.txt“ zu erstellen. Persönlich verwende ich die Undetected-Chromedriver-Bibliothek, die Selen benötigt

undetected-chromedriver==3.5.5
FROM python:3.10



COPY ../.. .


RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN apt-get -y update
RUN apt-get install -y chromium

# install chromedriver
RUN apt-get install -yqq unzip
RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
ENV DISPLAY=:99


RUN pip install -r requirements.txt


CMD python -u app.py 

Diese Docker-Datei können Sie dann beispielsweise in einem Docker-Compose ausführen.

services:
  bot:
    build: selenium-test

II – Skript

Im zweiten Schritt muss ich zwei Optionen für das Arbeiten in einem Container hinzufügen.

Ich füge hinzu:

  • --keine Sandbox
  • --disable-setuid-sandbox

Hier ist ein Beispiel mit Python

class App:
    options: uc.ChromeOptions
    driver: uc.Chrome

    def __init__(self):
        self.options = uc.ChromeOptions()
        self.options.arguments.extend(["--no-sandbox", "--disable-setuid-sandbox"])
        self.driver = uc.Chrome(headless=True, use_subprocess=False)

Sie können dann einen undetected_chromedriver wie folgt als Selenium verwenden:

self.driver.execute_script("console.log("Hello")

Das obige ist der detaillierte Inhalt vonSelenium-Python und Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn