【無料】Google Apps Scriptでwebスクレイピングを行う方法。動的&静的ページどちらも可能。

こんな人におすすめ

簡単にweb情報を取得したい。

Google Apps Scriptでwebスクレイピングを行いたい。

今回は、Google Apps Scriptでwebスクレイピングをする方法を解説していきます。

Google Apps Scriptでwebスクレイピングを行う利点は?

クリエイティブライティングとストーリーテリング、簡単なドキュメントペーパー、高品質のコンテンツ最適化、デジタルメディアを使用したコピーライター - google apps script点のイラスト素材/クリップアート素材/マンガ素材/アイコン素材

そもそも、Google Apps Scriptでwebスクレイピングをする利点はなんでしょうか?

一番が手軽さだと思います。

Google Apps ScriptはGoogle アカウントさえあればできますし、サーバー代やスプレッドシートを使えばデータベース代などの余計な費用もかかりません。

サーバーへのアップロード作業もいらないので、余計な手間が減ります。

またスクレイピングは自動実行が必要ですが、Google Apps Scriptでもそれが標準で用意されています。使いやすいです。

これらの理由から、webスクレイピングは、Google Apps Scriptでやるのが向いているというわけです。

⚠️注意⚠️ Google Apps Script で取得できないページとは

多要素認証、ユーザー、ログイン、サイバーセキュリティプライバシーはデータを保護します。インターネットネットワークセキュリティ技術。暗号化されたデータ。個人のオンラインプラ� - ログイン ストックフォトと画像

Google Apps Script でも取得できないページが存在します

取得できないページ

①ログインなどを必要とするページ

②URLを指定して、直接そのページに行けないページ

これらは、セッションなどの情報が必要だったり、直接URLで指定のページに飛ぶことができないのがそれにあたります。

あべべ

URLを指定して、直接表示できるページは、Google Apps Script で取得可能です!!

静的ページを取得する場合の方法

小さな会計士のキャラクターは、会計士レポート巨大なクリップボードでマネーバランスをチェックする簿記データを計算します - 情報取得点のイラスト素材/クリップアート素材/マンガ素材/アイコン素材

【準備編】Parserライブラリの追加

今回は、スクレイピングをするのにとても便利な「Parser」ライブラリを追加していきます。

IDは以下です。

ID

1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

あべべ

追加できたら、コードを書いていきましょう!

コードの追加

コードの追加の流れは次のような感じです。

コードの流れ

①特定のURLのHTML情報(文字情報)を取得してくる

②Parserライブラリを用いて、取得したい箇所を指定して、取得。

あべべ

何を言っているのかわからないかもですが、コードを書いていきながら理解していきましょう。

今回取得するページ

wikipedia の「織田信長」のページを取得してみます。

織田信長 - Wikipedia

では、以下のコードをコピペしてみてください。

function get_pageinfo() {
  let url = "https://ja.wikipedia.org/wiki/%E7%B9%94%E7%94%B0%E4%BF%A1%E9%95%B7"
 
  //①の部分
  var html = UrlFetchApp.fetch(url).getContentText('UTF-8');
  console.log(html);

  //②の部分
  var result_iterate = Parser.data(html).from('<span class="mw-page-title-main"> ').to('</span>').iterate();
  var result_build = Parser.data(html).from('<span class="mw-page-title-main"> ').to('</span>').build();
  console.log(result_iterate);
  console.log(result_build);
  
}

コードの解説

①「特定のURLのHTML情報(文字情報)を取得してくる」

まず、流れで言う①の部分

「特定のURLのHTML情報(文字情報)を取得してくる」

を以下コードで行っています。

var html = UrlFetchApp.fetch(url).getContentText('UTF-8');
console.log(html);

実行した時に、たくさん文字が出てきたはずです。

出力した文字が、ページ内(今回だと、wikipediaの織田信長ページ)のHTML情報になっています。

この文字情報から、自分が欲しい情報を取得していきます。

今回は、一番上の「織田信長」の文字が欲しいとしましょう。

②Parserライブラリを用いて、取得したい箇所を指定して、取得。

Parserライブラリはwebスクレイピングをするときに、とても便利なものです。

使い方は、取得したい文字列の「前後の文字」を指定するというものです。

前後の文字の見つけ方

前後の文字を見つける方法を解説します。

前後の文字を見つけるためには、まずページを開いてから、右クリックで「開発者ツール」「検証」と言うものがあるのでそれをクリックします。

すると、以下のように、画面右がわにページのHTML情報が表示されます。

今回は、「織田信長」という文字を取得してきたい場合は、右の赤枠の部分に書いてある

【前】 <span class="mw-page-title-main">

【後】 </span>

のようになります。

前後の文字を見つけたら、以下のコードのform toのところに当てはめます。

Parser.data(html).from('<前>').to('<後>').iterate();

iterate() , build() の違い

iterate と build の違いを解説していきます。

iterate() は複数選択、配列で表示されます。

そのため、条件に一致しているものは、すべて取得されます。

一方、build() は条件に合う、最初の一つを取得します。

そのため、配列でなく、文字単体で表示されます。

あべべ

先ほど示したコードの中に、2つ表していると思います。

実行ログで表示されるようにしていますので、違いを見てみてください👍

あべべ

ここまでで、静的ページのwebスクレイピングの解説は終了です!お疲れ様でした!

動的ページを取得する場合の方法

動的ページを取得する方法は、次の記事で解説しています。

下から飛べます🛫

(Visited 143 times, 1 visits today)