Es ist einfach, einen Headless-Browser zu verwenden, da phantom.js immer noch problemlos für die lokale Ausführung auf Mac OS funktioniert. Ich wollte es mit Cloud Run verwenden. Als ich versuchte, den Vorgang mit dem offiziellen Python-Image zu überprüfen, war es unerwartet kompliziert. Machen Sie sich also eine Notiz
Anscheinend würde phantom.js nicht mehr aktualisiert werden, also entschied ich mich, Headless-Chrome leise zu verwenden. Ich wollte mich nicht anstrengen, also habe ich die Artikel anderer Leute abgefangen Aber ich bin dumm, also habe ich es sowieso nicht verstanden, als ich den Artikel gesehen habe, also habe ich beschlossen, selbst etwas zu tun
Es ist nicht besonders schwierig und funktioniert problemlos, wenn die folgenden Bedingungen erfüllt sind.
Laden Sie den Chromkörper herunter
Laden Sie die Version des Treibers herunter, die zum Chromgehäuse passt
Stellen Sie die Startoptionen entsprechend ein
Dockerfile Basisbild verwendet
# Use the official Python image.
# https://hub.docker.com/_/python
FROM python:3.7
Überprüfen Sie die Version zum Zeitpunkt der Installation, wenn Sie das Chrome-Hauptgerät herunterladen.
RUN sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN apt update
RUN apt install google-chrome-stable -y
Suchen Sie zuerst den Treiber-Download, der Ihrer Chrome-Version am nächsten kommt https://chromedriver.storage.googleapis.com/ Suchen Sie dann nach der neuesten Version, die der Version des Hauptgeräts am nächsten kommt, da es diesmal 80 Einheiten waren https://chromedriver.storage.googleapis.com/LATEST_RELEASE_80
Laden Sie die Nummer herunter und entpacken Sie sie
RUN wget https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d /usr/bin/
Stellen Sie natürlich sicher, dass Sie zu diesem Zeitpunkt den PFAD für beide sehen können.
which chromedriver
witch google-chrome
Nur das ist in Ordnung Verwenden Sie es danach einfach und schreiben Sie vorerst ein Anwendungsbeispiel
app.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
URL = "https://example.jp"
def get_trends():
try:
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=options)
driver.get(URL)
html = driver.page_source.encode('utf-8') # more sophisticated methods may be available
soup = BeautifulSoup(html, "lxml")
Bukkake Memo
Recommended Posts