Hai, saya tunjukkan cara saya menggunakan selenium (atau undetected_chromedriver) dalam bekas docker.
Saya menggunakan imej ular sawa docker dan menambahkan chromdriver dan chromium untuk menyemak imbas tapak web.
Langkah pertama ialah mencipta fail requirements.txt. Secara peribadi, saya menggunakan perpustakaan undetected-chromedriver, yang mengambil selenium
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
Anda kemudian boleh menjalankan Dockerfile ini dalam docker-compose, sebagai contoh.
services: bot: build: selenium-test
Dalam langkah kedua, saya perlu menambah dua pilihan untuk bekerja dalam bekas.
Saya menambah :
Berikut ialah contoh dengan 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)
Anda kemudian boleh menggunakan undetected_chromedriver sebagai selenium seperti ini:
self.driver.execute_script("console.log("Hello")
Atas ialah kandungan terperinci Ular sawa selenium dan docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!