全取材あり! | エンジニアになれるプログラミングスクールおすすめ5社まとめ

Pythonでいろいろスクレイピングしてきましたが、Google Apps Scriptでのスクレイピングがかなりよいです。
今回はGoogle Apps Script(GAS)でスクレイピングをオススメする理由を、Pythonを利用する場合と比較して解説します。

GASを利用したスクレイピングのメリット

Pythonなどのサーバーサイドの言語を書くのに比べて、Google Apps Scriptを利用したほうが便利な場合があります。Google Apps Scriptを利用したスクレイピングをするメリットについて、ご紹介します。

メリットは、以下の通りです。

  1. 環境構築一切不要
  2. 定期実行が超絶簡単
  3. 学習コストが超絶低い
  4. 取得結果をだれにでもスクレイピング結果をリアルタイムに共有しやすい
  5. 伝家の宝刀IMPORTXML関数で、コードを書かずにスクレイピング

環境構築一切不要

普通にPythonでスクレイピングしようと思う場合、まずPythonのインストール、必要なライブラリのインストールからはじまります。その場合だと、初心者だとセットアップに時間がかなりかかります。

その点、GASを利用する場合は、Google Apps Scriptを起動するだけで終了します。セッティングに一切時間がかからないので、非常に簡単にスクレイピングを始められます。

定期実行が超絶簡単

Pythonで定期実行プログラムを組む場合、ローカルのPCを常時起動してCRONを実行させるか、サーバーを借りてそので定期実行プログラムを動かすかのどちらかになります。PCを常時起動しておくのは、かなり不便です。また、サーバーを借りるとしても、そのサーバー代や、セッティングコストを考えると面倒です。また、無料で定期実行を行おうとすると、定期実行の回数を設定する柔軟性が失われます。例えばHerokuを利用して定期実行したい場合、選べるのは日単位、時間単位、日にち単位ぐらいです。

一方、Google Apps Scriptの定期実行プログラムは、完全無料でGUI上で簡単にセッティングできます。PCを常時起動しておいたり、サーバーを借りたりする必要もありません。また、定期実行の間隔もかなり細かく設定できます。1時間ごとに設定したり、24時に毎日実行したり。

 

学習コストが超絶低い

Pythonでスクレイピングしようとすると、

  • 環境構築
  • Pythonの基本文法
  • Linuxの知識
  • DB設定
  • CSV連携
  • サーバーへの接続
  • cron

等の学習コストが生じます。かつ、それに各ライブラリの知識が必要になります。

一方、Google Apps Scriptの場合、基礎的なJavaScript・正規表現・IMPORTXML関数ぐらいの知識でスクレイピングできてしまいます。いくつか主要な関数だけ仕様を理解できれば、かなり簡単にスクレイピングできてしまいます。

取得結果をだれにでもスクレイピング結果をリアルタイムに共有しやすい

例えば、Pythonでスクレイピング結果を確認したい場合、ローカルに保存してあるCSVを共有するか、もしくは共有サーバー上のデータにアクセスしにいくことになると思います。サーバーも不特定多数の人からアクセスできないようにさせる必要があり、セキュリティ的な観点でも面倒くさいです。またITがよくわからない人にとっては、共有しづらいです。

一方で、Google Apps Scriptなら、スプレッドシート上に取得した値を書き込めるので、共有する場合はスプレッドシートのURLをコピーするだけで終わります。ITが苦手な人でも、URLを送るだけで終わりです。

伝家の宝刀IMPORTXML関数

Pythonでスクレイピングする場合は、各種ライブラリのインストールを行い、HTTP Requestを特定のURLに送信、その結果をXMLかJSONにパースして整形し、特定の値を取得するという流れになります。ここまでにかなりの行数のコードを書くことになります。

一方で、Google Apps Scriptなら、取得したい値があるページのURLと、その値のXPathをimportxml関数の引数に入れるだけで終わりです。

Google Apps Scriptで向いてるスクレイピング

Google Apps Scriptを使ってスクレイピングをする場合、こういう状況であれば大きな効果を発揮します。

  • 小規模なデータの取得
  • 定期実行が必要になるスクレイピング

取得するデータ量が少ない場合、さくっと作るものならばPythonを利用するよりもGoogle Apps Scriptで取得しちゃったほうが楽です。

また、データの取得が一回きりではなく、何度も定期実行を行う必要がある場合は、Google Apps Scriptを用意するのがよいでしょう。サーバー構築が必要ないので、楽です。

スクレイピング結果を誰にでも簡単に共有したい場合

ローカルのPCでスクレイピングしてCSVにまとめても、共有するのが大変です。Googleスプレッドシートなら取得した結果がリアルタイムでスプレッドシートに共有されるので、結果を共有したい場合はGoogle Apps Scriptをつかって、その結果をスプレッドシートに共有してしまうのがよいでしょ。

余談ですが、スプレッドシートには、グラフをiframe形式でHTML化できる機能があります。スクレイピング結果を、グラフ化して表示し、適当なサイトにグラフとして表示しておくことも可能です。ちょうどよいサンプルとして、前に相席居酒屋の在籍情報をリアルタイムで可視化したグラフを、ブログにはりつけているので、こちらの記事を参考にしてみてください。

Google Apps Scriptで向いていないスクレイピング

Google Apps Scriptで向いてないこともあります。

  • 大規模なデータのスクレイピング
  • ブラウザ操作(クリック・フォーム入力)が求められるスクレイピング

GASは大規模データのスクレイピングは向いていません。実行時間が制限されているので、取得している間にエラーがおこり終了してしまいます。

また、クリック・フォーム入力等のブラウザ操作が伴うスクレイピングはGASでは難しいです。静的なページの特定の値を取得する場合であればよいのですが、PythonのSeleniumのように、ブラウザ操作(クリック、フォーム入力)が伴うスクレイピングは、あまり向いていません。こういう場合はPythonのSeleniumを利用したほうがいいです。Seleniumに関しては、過去の記事で紹介しております。

Google Apps Scriptでのスクレイピング方法は?

Google Apps Scriptを利用してスクレイピングする方法は以下2点です。

  • IMPORTXML関数の利用
  • 正規表現を利用したスクレイピング

IMPORTXML関数の利用これは正確にはGoogle Apps Scriptではなく、Google Spreadsheetの関数なのですが、指定したセルにURLとXPATHさえ入力すれば、スクレイピングができてしまいます。

もう一つは、HTMLのソースを正規表現を利用して検索し、合致する値のデータをスクレイピングするという方法です。こっちのほうが難しいですが、より柔軟にデータの取得ができると思います。

まとめ

スクレピングするときにシチュエーションにあわせて使い分けられるとよさそうですね。

参考

≫データサイエンティストの年収は?業務内容、必要スキル、転職方法について解説してみた!