[PYTHON] Exécutez headless-chrome sur une image basée sur Debian

Je veux charger js en grattant

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

Je ne comprends pas que les informations débordent

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

Conclusion

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")

la fin

Mémo Bukkake

Recommended Posts

Exécutez headless-chrome sur une image basée sur Debian
Exécutez un serveur Linux avec GCP
Exécutez l'image Docker de TensorFlow sur Python3
Exécutez TensorFlow2 sur le serveur VPS
Exécutez le code Python sur A2019 Community Edition
Exécuter le notebook Jupyter sur un serveur distant
Exécutez matplotlib sur un conteneur Windows Docker
Exécutez régulièrement des programmes Python sur AWS Lambda
Exécutez mysqlclient sur Lambda
Exécutez OpenMVG sur Mac
[kotlin] Créez une application de reconnaissance d'images en temps réel sur Android
Comment exécuter Django sur IIS sur un serveur Windows
Comment exécuter un modèle de transformateur entraîné localement sur CloudTPU
Exécutez Jupyter sur Ubuntu sous Windows
Exécutez Openpose sur Python (Windows)
Un commentaire sur l'algorithme de Boruta
Exécutez Tensorflow 2.x sur Python 3.7
Exécutez le CGI de Python sur CORESERVER
Créer une salle de classe sur Jupyterhub
Exécutez IPython Notebook sur Docker
Exécutez YOLO v3 sur AWS v2
Exécutez Circuit Python sur Seeeduino XIAO
Exécutez Jupyter Notebook sous Windows
Exécutez OpenVino sur macOS Catalina
L'image est Namekuji
Exécutez YOLO v3 sur AWS
Exécutez une application Java qui réside sur AWS EC2 en tant que démon
Créer une image de conteneur Docker avec JRE8 / JDK8 sur Amazon Linux
Création d'un environnement pour exécuter ChainerMN sur une instance de GPU AWS
Préparez un format de projet d'apprentissage automatique et exécutez-le dans SageMaker