셀레늄 파이썬과 도커

WBOY
풀어 주다: 2024-08-27 06:02:32
원래의
562명이 탐색했습니다.

Selenium python and docker

안녕하세요. Docker 컨테이너에서 Selenium(또는 unDetected_chromedriver)을 사용하는 방법을 보여드리겠습니다.


나 - 도커파일

Docker Python 이미지를 사용하고 chromdriver와 chromium을 추가하여 웹사이트를 탐색하고 있습니다.

첫 번째 단계는 요구 사항.txt 파일을 만드는 것입니다. 개인적으로 저는 셀레늄을 사용하는 unDetected-chromedriver 라이브러리를 사용합니다

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 
로그인 후 복사

그런 다음 예를 들어 docker-compose에서 이 Dockerfile을 실행할 수 있습니다.

services:
  bot:
    build: selenium-test
로그인 후 복사

II - 스크립트

두 번째 단계에서는 컨테이너 작업을 위한 두 가지 옵션을 추가해야 합니다.

추가합니다:

  • --샌드박스 없음
  • --disable-setuid-sandbox

다음은 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)

로그인 후 복사

그런 다음 unDetected_chromedriver를 다음과 같이 셀레늄으로 사용할 수 있습니다.

self.driver.execute_script("console.log("Hello")
로그인 후 복사

위 내용은 셀레늄 파이썬과 도커의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!