Selenium-Python und Docker

WBOY
Freigeben: 2024-08-27 06:02:32
Original
574 Leute haben es durchsucht

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
Nach dem Login kopieren
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 
Nach dem Login kopieren

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

services:
  bot:
    build: selenium-test
Nach dem Login kopieren

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)

Nach dem Login kopieren

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

self.driver.execute_script("console.log("Hello")
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage