Maison  >  Article  >  développement back-end  >  Python sélénium et docker

Python sélénium et docker

WBOY
WBOYoriginal
2024-08-27 06:02:32577parcourir

Selenium python and docker

Bonjour, je montre comment j'utilise le sélénium (ou undetected_chromedriver) dans un conteneur Docker.


I - Fichier Docker

J'utilise une image Docker Python et j'ajoute chromdriver et chromium pour parcourir un site Web.

La première étape consiste à créer le fichier exigences.txt. Personnellement, j'utilise la bibliothèque chromedriver non détectée, qui prend du sélénium

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 

Vous pouvez ensuite exécuter ce Dockerfile dans un docker-compose, par exemple.

services:
  bot:
    build: selenium-test

II - Scénario

Dans la deuxième étape, je dois ajouter deux options pour travailler dans un conteneur.

J'ajoute :

  • --pas de bac à sable
  • --disable-setuid-sandbox

Voici un exemple avec 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)

Vous pouvez ensuite utiliser un undetected_chromedriver comme sélénium comme ceci :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn