[PYTHON] Automatisez le processus WEB avec Heroku + Selenium + Chrome

Automatisez le processus WEB avec Heroku + Selenium + Chrome

introduction

Il s'agit d'un article sur l'environnement Mac, mais la procédure est la même pour l'environnement Windows. Veuillez lire et essayer la partie dépendant de l'environnement.

Objectif

Après avoir lu cet article jusqu'au bout, vous pourrez:

Automatisation des processus Web

Obtenez et affichez ** USD / JPY ** à partir du taux de change de Yahoo!

Afficher manuellement depuis le navigateur Afficher les données acquises automatiquement
Capture d'écran 2019-11-17 16.21.49.png Capture d'écran 2019-11-17 0.33.50.png

Articles Liés

Environnement d'exécution

environnement Ver.
macOS Mojave 10.14.6
Python 3.7.3
Flask 1.1.1
selenium 3.141.0
chromedrive 78.0.3904.70
google-chrome 78.0.3904.97

Code source

Je pense que vous pouvez approfondir votre compréhension en suivant réellement le contenu de l'implémentation et le code source. Veuillez l'utiliser par tous les moyens.

GitHub

Scénarios et prérequis

  1. Obtenez et affichez ** USD / JPY ** à partir du taux de change graphique de Yahoo! Finance.
  2. Il est censé être sauvegardé dans MySQL ou PostgreSQL, mais les éléments liés à la base de données sont hors de portée pour expliquer l'automatisation.
  3. Le framework API adopte Flask.

Créer un processus automatisé

Configuration de l'API Python

tree.sh


python-Selenium
  ├── fx_rate
  │   ├── __init__.py
  │   └── utility.py
  └── main.py

Cadre principal de l'API

main.py


import datetime
import logging
import os

from flask import Flask

from fx_rate.utility import get_fx_rate

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

app = Flask(__name__)


@app.route('/fx-rate', methods=['GET'])
def get():
    usd_jpy = get_fx_rate()
    res = 'timestamp={}, USDJPY={}'.format(
        datetime.datetime.utcnow() + datetime.timedelta(hours=9), usd_jpy)
    logger.info(res)
    return res, 200


if __name__ == '__main__':
    host = os.getenv('HOST', '0.0.0.0')
    port = int(os.getenv('PORT', 5000))
    app.run(host=host, port=port, debug=True)

Obtenez le taux de change

utility.py


import datetime

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By


def get_fx_rate():
    options = Options()
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)
    driver.get('https://info.finance.yahoo.co.jp/fx/')
    usd_jpy = driver.find_element(By.ID, 'USDJPY_top_bid').text
    driver.quit()
    return usd_jpy


if __name__ == '__main__':
    usd_jpy = get_fx_rate()
    print('timestamp={}, USDJPY={}'.format(datetime.datetime.utcnow() +
                                           datetime.timedelta(hours=9), usd_jpy))

Paramètres Heroku

Paramètres de Chrome et du pilote

Ajoutez ce qui suit à partir de ** Add buildpack ** dans la section Paramètres> Buildpacks.

スクリーンショット 2019-11-16 21.12.36.png
Buildpack URL
chromedrive https://github.com/heroku/heroku-buildpack-chromedriver.git
google-chrome https://github.com/heroku/heroku-buildpack-google-chrome.git

`Si vous déployez sur Heroku, il sera installé automatiquement. Veuillez vous inscrire à l'avance. Si vous avez déjà déployé ou souhaitez redéployer sans modifier le code source, essayez la validation vide ci-dessous. ''

allow_empty.sh


~$ git commit --allow-empty -m "allow empty commit"
~$ git push heroku master

Paramètre de version du pilote

Normalement, aucun réglage n'est requis. Si les versions de ** chromedrive ** et ** google-chrome ** sont différentes, par exemple lors de la mise à niveau de Chrome, vous devez spécifier la version de ** chromedrive **.

  1. Cliquez sur ** Reveal Config Vars ** dans la section Settings> Config Vars.
  2. Saisissez ** KEY ** et ** VALUE **, puis cliquez sur ** Ajouter **.
スクリーンショット 2019-11-16 21.12.25.png
KEY VALUE
CHROMEDRIVER_VERSION Version prise en charge(Exemple: 78.0.3904.70)

Recommended Posts

Automatisez le processus WEB avec Heroku + Selenium + Chrome
Application Web facile avec Python + Flask + Heroku
Pratiquer le web scraping avec Python et Selenium
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Télécharger le PDF avec sélénium chromedriver (Chrome 57) + (Autres notes)
Fonctionnement automatique de Chrome avec Python + Sélénium + pandas
Essayez d'exécuter Google Chrome avec Python et Selenium
Grattage avec du sélénium
Commençant par Selenium
Connexion automatique au service maintenant avec le pilote Web Selenium
Automatisez Chrome avec Python et Selenium sur votre Chromebook
Comment passer en mode smartphone avec Python + Selenium + Chrome
Déployer une application Web créée avec Streamlit sur Heroku
Grattage réussi avec Selenium
ScreenShot avec Selenium (édition Python)
Grattage avec du sélénium [Python]
Processus gaussien avec pymc3
Comment déployer une application Web créée avec Flask sur Heroku
(Échec) Déployer une application Web créée avec Flask avec heroku