Herokuの無料プランでスクレイピングをする

ずっとメインPCでスクレイピングさせていたのですが、音が気になって睡眠の質がめちゃくちゃ悪化しました。

ようやくサーバー上で稼働するように変更しようと腰をあげました。

開発言語 python3.7
パッケージ管理 pipenv
herokuプラン Free
OS Windows10 pro 64bit

HerokuはPaaSの一つです。今回Herokuを選んだのは、小さく始めるのに最適だったというのが一つです。Herokuには無料プランがあり、無料プランでもクレジットカードを登録すれば、1月あたり1000時間の稼働時間を確保できることです。ひと月は744時間なので、1つのアプリだけなら24時間稼働が可能です。

他のアプリも制作するようになれば、AWSを利用していきたいとは思いますが、まだ早いといいますか。

【宣伝】 10月20日(土)の10時から、福山IT座談会を行います。

近隣の方、ご興味があればぜひconnpassページより申し込みの方お願いいたします。

前回レポートはこちら

Herokuの登録

登録も無料です。料金プランはいろいろありますが、今回は前述した通り無料プランを選択。

Herokuから登録してみましょう。日本語なので、わかりやすいですね。

登録が終わるとメールがくるので、認証しておいてください。

チュートリアルをする

緊急性がない場合は、チュートリアルをして実際に設定から稼働までを体験した方が感覚がつかめると思います。特に、Heroku上でアプリを稼働させる場合までのチュートリアルが言語ごとに提供されているので、余裕のある方はそちらをやることをお勧めします。

Dev Centerにアクセスしてもらって、任意の言語のアイコンをクリックするとドキュメント及びチュートリアルページが表示されると思います。

pythonのドキュメントページだと、

赤い四角の部分をおすとチュートリアルがはじまります。

パッケージインストール

チュートリアルは割愛しますが、いくつかパッケージをインストールする必要があります。

今回はpythonを使っているので、pythonをインストール。

HerokuはGit必須ですので、Gitの導入がまだの方はこちらから。

PipenvPostgresをpipで。

それから Heroku Command Line Interfaceをwindowsの場合は、インストーラーで導入します。macOSの場合は、

でインストールできます。

ログイン等

パッケージを導入できるとコマンドライン上からherokuコマンドが実行できるようになっているはずです。

早速 heroku login でログインしてみましょう。

次に、heroku上にアプリケーションを作ります。

先に開発用のルートフォルダに移動します。

これはheroku create をすることで自動的にheroku create した先がherokuのリモートリポジトリとして登録されるためです。

fukushidbはアプリ名ですが、入力が無い場合は自動でアプリ名が設定されます。

このアプリ名は後から変更可能です。

pushする前に準備

①ドライバーの変更

※chromedriverでスクレイピングをしない方はスキップ

ローカルではchromedriverの存在するパスを明示していたと思いますが、heroku上でも稼働させる場合、そうではなく、heroku上のBuildpacksを利用することになります。

そのため、seleniumを起動する際のコード本文は以下のように変更します。

それと、heroku側にもブラウザの場所を教えておきます。

appのsetting内のBuildpacksに以下の2つを追記します。

https://github.com/heroku/heroku-buildpack-chromedriver.git

https://github.com/heroku/heroku-buildpack-google-chrome.git

②パッケージの移行

インストールしてあるパッケージの依存関係については、パッケージ管理ツール、pythonではPipenvを使用することで本番環境へスムーズにデプロイすることができます。

これでPipfile, Pipfile.lockファイルが生成される。

初期ファイルにはseleniumが含まれていなかったので、以下のコマンドで追加する。

他のパッケージも同様に pipenv install [package]でインストールすることで、Pipfileに追記していける。

③ファイルの作成

・Procfileについて

登録したいコマンドを登録する

・日本語フォントについて

herokuは日本語フォントに対応していないので、ルートディレクトリ内に.fontディレクトリを用意することで、ディレクトリ内のフォントを使用してもらうことができる。

今回は、IPAexフォントを使用する。.fontディレクトリに.ttfファイルを入れて終わり。

push!

でpushしましょう。

起動する

heroku上のProcfileに書いてあるhogeをワーク1として実行します。

おまけ ログを見る

appメニュー内にViewlogがあります。

こちらにprint等で記載されているものについては閲覧することができます。