Python Cloud9を利用して、定期処理をherokuから行う
Cloud9というIDEを利用して、PythonからSeleniumを利用し、あるサイトでいいねを自動化するプログラムを作った。これを定期実行を行いたい。検索してみると、crontabを使えば定期実行ができるようだが、cloud9上では実行できない。
ほかの代替案を考えたとき、heroku schedulerを利用して定期実行を行えるのではと思い、やってみたらうまくいった。その時の作業ログを残しておく。特に詰まったところ。
手順としては
・bottleを使ってherokuにdeploy
・heroku schedulerに接続
・heroku schedulerに実行プログラムを入力
pythonプログラムをherokuにdeployする
実行したいプログラムをherokuにdeployする。herokuにdeployするところまでは下記参照。
【ローカル環境構築不要】Cloud9で作ったPythonのbottleアプリケーションをHerokuにdeployする - Qiita http://qiita.com/masaibar/items/86dd57efd50ab729ccf6
Selenium関係のインストール
以下をインストールする。
$ pip install selenium
$ pip install crontab
$ npm install phantomjs
で、heroku上で環境を構築するために、requirements.txtを作成する。
$ pip freeze -l > requirements.txt
requirements.txtから、つかわない以下の項目を削除する。
今回はここで詰まった。scipyはherokuだと動かないらしいし。
matplotlib==1.3.1
pygobject==3.12.0
python-apt==0.9.3.5ubuntu2
python-dateutil==2.0
unattended-upgrades==0.1
scipy==0.13.3
numpy==1.8.2
requests==2.2.1
numpy==1.8.2
で、普通にgitにcommitした後に、herokuにpushすれば大丈夫。
$ git push heroku master
これでdeployがうまくいったみたい。
herokuスケジューラーを起動する。
Heroku Schedulerと接続する
herokuスケジューラーを起動する。
$ heroku addons:create scheduler:standard
で、今度はherokuで実行するスケジュールをセットする
$ heroku addons:open scheduler
Opening https://addons-sso.heroku.com/apps/d5087dc6-6949-4335-bd42-3f13150fa199/addons/9a753940-5305-4b2e-b520-a7cc80f7655e...
実行するとこんな感じのURLが出てくる。
簡単!Herokuで動くTwitter botをPythonで実装する - Qiita http://qiita.com/enomotok_/items/41275dd904c8aa774e72
こんな感じで、スクレーピングするプログラムを自動定期処理できることができました。Cloud9からできるのいいね!
参考
Cloud9でPython3・Beautifulsoup4・Selenium・Phantomjsでスクレイピング - メモ
http://imabari.hateblo.jp/entry/2017/05/26/163602
簡単!Herokuで動くTwitter botをPythonで実装する - Qiita http://qiita.com/enomotok_/items/41275dd904c8aa774e72
Heroku上のPythonでPhantomJSを使うまで - Qiita http://qiita.com/kiragit/items/c8b82a1d76960659c4f7
Re:ゼロからFlaskで始めるHeroku生活 〜PhantomJSをHerokuへ〜 - Qiita http://qiita.com/ymgn_ll/items/585e94a3d2d23ca1fec3#_reference-f4044594a112d4952ecb
スポンサーリンク
この記事をシェアする
スポンサーリンク