Il est facile d'utiliser un navigateur sans tête car phantom.js fonctionne toujours confortablement pour le faire localement sur Mac OS. Je voulais l'utiliser avec Cloud Run, donc quand j'ai essayé de vérifier l'opération avec l'image python officielle, c'était étonnamment compliqué, alors prenez note
Apparemment, phantom.js cesserait de se mettre à jour, alors j'ai décidé d'utiliser tranquillement le chrome sans tête. Je ne voulais pas utiliser l'effort, alors j'ai attrapé les articles d'autres personnes Mais je suis stupide, donc je ne l'ai pas compris de toute façon quand j'ai vu l'article, alors j'ai décidé de faire quelque chose moi-même
Ce n'est pas particulièrement difficile et cela fonctionne facilement si les conditions suivantes sont remplies.
Téléchargez le corps chromé
Téléchargez la version du pilote qui correspond au corps chromé
Définissez les options de démarrage de manière appropriée
Dockerfile Image de base utilisée
# Use the official Python image.
# https://hub.docker.com/_/python
FROM python:3.7
Assurez-vous de vérifier la version au moment de l'installation lors du téléchargement de l'unité principale Chrome.
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
Trouvez d'abord le téléchargement de pilote le plus proche de votre version de Chrome https://chromedriver.storage.googleapis.com/ Ensuite, recherchez la dernière version la plus proche de la version de l'unité principale, car cette fois, il s'agissait de 80 unités https://chromedriver.storage.googleapis.com/LATEST_RELEASE_80
Téléchargez et décompressez avec le numéro que vous trouvez
RUN wget https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d /usr/bin/
Bien sûr, assurez-vous que vous pouvez voir le PATH pour les deux à ce stade.
which chromedriver
witch google-chrome
C'est juste OK Après cela, utilisez-le, écrivez un exemple d'utilisation pour le moment
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")
Mémo Bukkake
Recommended Posts