見出し画像

スクレイプし放題な自分専用のWebScraperをGAEに5分で用意する

個人用としてならば無料でWebスクレイプし放題な環境を作れるだろうGAE.std用プロジェクトをGitHubに公開しました。
(GAE.stdって表示は今思いついたんですが、なかなか良くないですか?)

Webには似たようなサンプルがたくさんあるし、そもそもそれらのサンプルからインスパイアされて作ったのですが、CSSのセレクタ指定できるってのと画像でも文字列でも取得できるようにしてる点が売りで、GAE(Google App Engine)のStandard版で自分専用として簡単に可動させることができるようにしています。
はじめはCloudFunctionで実装を始めたのですが、AppEngineの方が管理的におもしろいのでExpress化させました。

使い方は簡単なので README 通りにコマンド入力すれば、5分もかからずにデプロイして使い始めることが出来ます。

AppEngineには大きめな無料枠があり個人ユースであればまず問題ないはずですが、クレカの登録は必須なうえに一応無料枠にも限度がありますので「作れるだろう ≒ 利用は自己責任で」としています。

Setup & Deploy

が、一応宣伝も兼ねているので簡単に解説を。

事前準備-1
まずはGCPにプロジェクトを作る必要があります(もちろん既存のプロジェクトを利用してもOKです)。その後、そのプロジェクトにAppEngine用のアプリを作成します。
GCPのWebUIでポチポチしても良いのですが、コマンドでも一発です(実際には二発ですが)。

gcloud projects create web-scraper-gae-xxx --name WebScraper
gcloud app create --region asia-northeast1 --project web-scraper-gae-xxx

gcloudがインストールされてない場合は ここ 等を参考にしてインストールしてください。

web-scraper-gae-xxx」はGCP内で一意のキーになりますので、各自適当な名前にして実行してください。「WebScraper」部分は名前になりますが、ここは重複しても大丈夫です。このままでも良いし自分でわかりやすい名前に変えても大丈夫です。

ほかには一応東京リージョンを指定していますが、スクレイピングなんでリージョン差による遅延なんて多分気にならないと思います。ご自由にどうぞ。

事前準備-2
すべてコマンドで操作できればよいのですが、「Cloud Build API」を有効にするところと課金対象にするところだけはマウスポチポチが必要そうです。
将来的にはAPIで操作できるようになるといいですね。

実際の作業としては、管理画面を開いて 「有効にする」ボタンをクリックし、画面の流れに沿って課金情報を入力するだけです。
(すでに課金情報は登録ずみなので画像を準備することは出来ませんでしたが、問い合わせられるままに進んでいけば良いだけなはずです)

コードをデプロイ
事前準備が終わればあとはデプロイするだけです。

GitでCloneしてきたフォルダに移動し下記コマンドを打ち込むだけで、うまく行けば環境が立ち上がります。

gcloud app deploy --project web-scraper-gae-xxx -q

「web-scraper-gae-xxx」の部分は事前準備で指定したキーに変更してから実行してください。

動作確認

実際に動いているかどうかについては、下記のコマンド等で確認出来ます。
もしPCに「curl」が入ってない場合は Postman 等が使いやすいと思います。

curl -H 'Content-Type:application/json' -d '{"url": "http://example.com/", "selector": "h1"}' https://web-scraper-gae-xxx.appspot.com/

上記のコマンドもしくはPostmanで実行した結果、["Example Domain"] が表示されれば無事にデプロイまで完了です。

POSTしてるJSONの内容は見れば一目瞭然だとは思いますが、

url: スクレイプするページのURL
selector: スクレイプしたいDOMのセレクター

を指定してください。

文字列の場合は該当するセレクターすべての内容が配列で取得でき、画像の場合には要素番号をimageNumberで指定出来ます。

その他

その他のオプションについては詳しくは ソースを参照 してください!

と言いながらも、その他のオプションやカスタマイズ方法、GAS(Google App Script)を利用してSlackをDashboardにする方法を、有料エリアに記載しておきます。
普段からスクレイプしている人やソースを見れば内容を理解できる人は購入する必要はないと思いますが、時間と金銭に余裕がある人は続きをどうぞ!

要望等はTwitterでもどうぞ!

ここから先は

3,130字 / 1画像

¥ 100

趣味のプログラミングにもいろいろとお金がかかって大変なんですわ。特に小遣い制の妻帯者は。