[PYTHON] Automatisieren Sie den WEB-Prozess mit Heroku + Selen + Chrome

Automatisieren Sie den WEB-Prozess mit Heroku + Selen + Chrome

Einführung

Dies ist ein Artikel über die Mac-Umgebung, aber die Vorgehensweise ist für die Windows-Umgebung dieselbe. Bitte lesen und probieren Sie den umweltabhängigen Teil.

Zweck

Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:

Webprozessautomatisierung

Erhalten und anzeigen Sie ** USD / JPY ** aus dem FX-Chart-Kurs von Yahoo! Finance.

Manuell über den Browser anzeigen Automatisch erfasste Daten anzeigen
Screenshot 2019-11-17 16.21.49.png Screenshot 2019-11-17 0.33.50.png

Zum Thema passende Artikel

Ausführungsumgebung

Umgebung 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

Quellcode

Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.

GitHub

Szenarien und Voraussetzungen

  1. Erhalten Sie ** USD / JPY ** aus dem FX-Chart-Kurs von Yahoo! Finance und zeigen Sie ihn an.
  2. Es soll in MySQL oder PostgreSQL gespeichert werden, aber DB-bezogene Elemente sind für die Erläuterung der Automatisierung nicht zulässig.
  3. Das API-Framework übernimmt Flask.

Automatisierten Prozess erstellen

Python-API-Konfiguration

tree.sh


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

API-Hauptrahmen

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)

Holen Sie sich FX Rate

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

Heroku-Einstellungen

Chrome- und Treibereinstellungen

Fügen Sie Folgendes unter ** Buildpack hinzufügen ** im Abschnitt Einstellungen> Buildpacks hinzu.

スクリーンショット 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

`Wenn Sie auf Heroku bereitstellen, wird es automatisch installiert. Bitte melden Sie sich im Voraus an. Wenn Sie bereits bereitgestellt haben oder erneut bereitstellen möchten, ohne den Quellcode zu ändern, versuchen Sie das leere Commit unten. ``

allow_empty.sh


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

Einstellung der Treiberversion

Normalerweise ist keine Einstellung erforderlich. Wenn die Versionen von ** chromedrive ** und ** google-chrome ** unterschiedlich sind, z. B. wenn Chrome aktualisiert wird, müssen Sie die Version von ** chromedrive ** angeben.

  1. Klicken Sie im Abschnitt Einstellungen> Konfigurations-Vars auf ** Konfigurations-Vars anzeigen **.
  2. Geben Sie ** KEY ** und ** VALUE ** ein und klicken Sie auf ** Add **.
スクリーンショット 2019-11-16 21.12.25.png
KEY VALUE
CHROMEDRIVER_VERSION Unterstützte Version(Beispiel: 78.0.3904.70)

Recommended Posts

Automatisieren Sie den WEB-Prozess mit Heroku + Selen + Chrome
Einfache Web-App mit Python + Flask + Heroku
Üben des Web-Scrapings mit Python und Selen
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Schaben mit Selen
Schaben mit Selen ~ 2 ~
PDF mit Selenchromatriver (Chrome 57) + herunterladen (Sonstige Hinweise)
Automatischer Betrieb von Chrome mit Python + Selen + Pandas
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Schaben mit Selen
Beginnend mit Selen
Automatische Anmeldung bei ServiceNow mit Selenium Web Driver
Automatisieren Sie Chrome mit Python und Selen auf Ihrem Chromebook
So wechseln Sie mit Python + Selenium + Chrome in den Smartphone-Modus
Stellen Sie eine mit Streamlit erstellte Web-App für Heroku bereit
Erfolgreiches Schaben mit Selen
Screenshot mit Selen (Python Edition)
Schaben mit Selen [Python]
Gaußscher Prozess mit pymc3
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit