Selenium Python と Docker

WBOY
リリース: 2024-08-27 06:02:32
オリジナル
582 人が閲覧しました

Selenium python and docker

こんにちは。Docker コンテナーで Selenium (または undetected_chromedriver) を使用する方法を示します。


I - Dockerfile

Docker Python イメージを使用し、Web サイトを閲覧するために chromdriver と chromium を追加しています。

最初のステップは、requirements.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 - スクリプト

2 番目のステップでは、コンテナで作業するための 2 つのオプションを追加する必要があります。

追加します:

  • --サンドボックスなし
  • --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 を Selenium として使用できます。

self.driver.execute_script("console.log("Hello")
ログイン後にコピー

以上がSelenium Python と Dockerの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート