🌐

【Heroku】Pythonのseleniumで定期実行する

2022/07/10に公開


Herokuサーバーを利用することでPythonのプログラムを定期実行することが可能になります。
本記事ではHerokuにPythonプログラムをデプロイする方法を解説します。

事前準備

会員登録

下記リンクにアクセス
https://jp.heroku.com/#
無料で新規登録をクリック

必要情報の入力、パスワードを設定します。

定期実行を実装するためにはクレジットカードを登録する必要があります。
クレジットカード登録の方法は下記の手順となります。下記URLを参照しました。
参照URL

  1. Heroku Dashboard の Account Settings​ (アカウント設定) に移動します。
  2. Billing​ (請求) タブをクリックします。
  3. Add Credit Card​ (クレジットカードの追加) をクリックします。

Herokuのコマンドラインツールをインストール

下記リンクよりご自身の環境に合わせたインストーラをダウンロードし、実行します。
https://devcenter.heroku.com/ja/articles/heroku-cli

必要ファイルの準備

Herokuへデプロイする際の基本的なファイル構成は下記の通りです。

フォルダ
|-requirements.txt
|-runtime.txt
└-Pythonファイル.py

requitements.txtには使用するライブラリを記載します。requirements.txtは下記コマンドで作成できます。

pip freeze > requirements.txt

runtime.txtには使用するPythonのバージョンを記載します。私は下記のバージョンを記載しました。

python-3.7.10

Herokuへのデプロイ

本記事では下記の2つのデプロイ方法を記載します。

  • 通常デプロイ
  • スクレイピング(Seleniumを利用する)用デプロイ

通常デプロイ

Herokuへのログイン

コマンドプロンプトで以下のコマンドを入力

heroku login

エンターを押してHerokuの画面を立ち上げます。

Log Inをクリック

Herokuアプリを作成

Pythonのプログラムがあるところにカレントディレクトリを移した後次のコマンドでアプリを作成します。アプリ名は一意のものになるため重複しない名前を指定します。

heroku create heroku-app-name

Heroku stack設定

下記コマンドでstackをheroku-20に設定します。

heroku stack:set heroku-20 -a heroku-app-name

デプロイ

コマンドプロンプトで以下のコマンドを入力

git init
heroku git:remote -a heroku-app-name
git add .
git commit -m "first commit"
git push heroku master

タイムスケジューラの設定

コマンドプロンプトで以下のコマンドを入力

heroku addons:create scheduler:standard --app heroku-app-name

Heroku上で作成したアプリを開きます。
下記画像のHeroku Schedulerをクリックします。

Create jobをクリックして時間を設定します。

これで設定した時刻にPythonのプログラムが動作するようになりました。

スクレイピング(Seleniumを利用する)用デプロイ

Herokuへのログイン

コマンドプロンプトで以下のコマンドを入力

heroku login

エンターを押してHerokuの画面を立ち上げます。

Log Inをクリック

Herokuアプリを作成

Pythonのプログラムがあるところにカレントディレクトリを移した後次のコマンドでアプリを作成します。アプリ名は一意のものになるため重複しない名前を指定します。

heroku create heroku-app-name

Chrome、chromedriver、PythonをBuildpacksに追加

Heroku上で作成したアプリを開きます。
Settingsタブ→Buildpacks→Add buildpackより下記を追加します。

Pythonファイルの編集

chromedriverの宣言コードを下記の通りに編集します。

# herokuで実行できるようにheadlessにする
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options, executable_path=str(os.environ.get('CHROMEDRIVER_PATH')))

デプロイ

コマンドプロンプトで以下のコマンドを入力

git init
heroku git:remote -a heroku-app-name
git add .
git commit -m "first commit"
git push heroku master

環境パスを設定

コマンドプロンプトで以下のコマンドを入力

heroku config:set CHROMEDRIVER_PATH=/app/.chromedriver/bin/chromedriver
heroku config:set GOOGLE_CHROME_BIN=/app/.apt/usr/bin/google-chrome

タイムスケジューラの設定

コマンドプロンプトで以下のコマンドを入力

heroku addons:create scheduler:standard --app heroku-app-name

Heroku上で作成したアプリを開きます。
下記画像のHeroku Schedulerをクリックします。

Create jobをクリックして時間を設定します。

これで設定した時刻にPythonのプログラムが動作するようになりました。

以上でHerokuへのPythonプログラムのデプロイは完了です。

Discussion