【Heroku】Pythonのseleniumで定期実行する
Herokuサーバーを利用することでPythonのプログラムを定期実行することが可能になります。
本記事ではHerokuにPythonプログラムをデプロイする方法を解説します。
事前準備
会員登録
下記リンクにアクセス
必要情報の入力、パスワードを設定します。
定期実行を実装するためにはクレジットカードを登録する必要があります。
クレジットカード登録の方法は下記の手順となります。下記URLを参照しました。
参照URL
- Heroku Dashboard の Account Settings (アカウント設定) に移動します。
- Billing (請求) タブをクリックします。
- Add Credit Card (クレジットカードの追加) をクリックします。
Herokuのコマンドラインツールをインストール
下記リンクよりご自身の環境に合わせたインストーラをダウンロードし、実行します。
必要ファイルの準備
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より下記を追加します。
- heroku/python
- https://github.com/heroku/heroku-buildpack-chromedriver.git
-
https://github.com/heroku/heroku-buildpack-google-chrome.git
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