これで解決!GAS Parserライブラリの使い方とデータ取得技術を徹底解説

GASでwebページのデータを取得したいんだけど、GAS Parserライブラリっていうのがあるって聞いたんだ…
猫男
猫男
catman
catman
よし、catmanがGASのParserライブラリの使い方を教えてやろう!データ取得が楽になること間違いなしだ。

GAS Parserライブラリの基本

まずは、GAS Parserライブラリで何ができるのかを理解しておこう。

こいつは、

ウェブページからデータを迅速に取得するための便利なライブラリ

だ。

GAS Parserのセットアップ

GAS Parserライブラリを利用するためには、まずプロジェクトにライブラリを追加する必要がある。

GASのライブラリ追加画面から「GAS Parser」を検索し追加しよう。

GAS Parserでデータを取得する方法

サンプルスクリプトで、基本的なデータ取得の流れを見てみよう。


var url = "http://example.com";
var parser = Parser.fetch(url);
var elements = parser.query("h1");

elements.each(function(element) {
  Logger.log(element.text());
});

このスクリプトの流れは、URLからHTMLを取得し、指定したタグ要素のテキストをログに出力するというものだ。

fetchメソッドでURLのHTMLを取得し、queryメソッドで特定のタグを指定している。

へぇ、これで簡単にwebからデータが取れるんだね!でも、正規表現とか使えたりするのかな?
猫男
猫男

GAS Parserでの正規表現利用

正規表現を使って特定の文字列を抽出できる。以下はそのサンプルだ。


var pattern = /(.*?)<\/strong>/g;
var matches = parser.text().match(pattern);

matches.forEach(function(match) {
  Logger.log(match);
});

このスクリプトでは、正規表現を用いてタグに囲まれたテキストを抽出している。

matchメソッドを使ってフィルタリングをしているぞ。

なるほど!でも、データが取得できないこともあるのかな?
猫男
猫男

GASのParserライブラリでデータが取得できない原因とその対策

GASでデータが取得できない時の原因はさまざま。

例えば、サイトの構造が複雑だったり、非同期通信の情報を取得しようとしている可能性もある。

解決するには、以下の方法を試してみよう。

  1. XPathを使って特定のノードを探す: GAS ParserはXPathも使える。サイト構造に合わせてXPath式を設定するとよい。
  2. HTML構造を確認する: 目標とするデータがどのように埋め込まれているかを調査することも重要。
  3. GitHubのGAS Parserリポジトリを参考にする: リポジトリには多くの事例があるため参考になるだろう。リンクする際は、公式のGAS Parser GitHubページを活用しよう。
catman
catman
もう一つ、意外と見落とされがちな解決法が、「Parserライブラリのドキュメント」をしっかり読むことだ。ここには多くの情報が詰まっているから、細かい挙動を知るのに役立つはずさ。

GAS Parserの反復処理を使いこなす

反復処理により、大量のデータを効率的に処理できる。


var listItems = parser.query("ul li");

listItems.each(function(li) {
  Logger.log(li.text());
});

この例では、リスト内の全ての項目を順番に処理してログに出力している。

eachメソッドは、指定した要素群に対して一括処理を行うときに便利だ。

練習問題

以下のコードを基に、次のことを実施してみよう。

1. articleタグ内の特定のクラスを持つ要素のテキストを取得しよう。
2. 正規表現を使用して、全てのメールアドレスを抽出しログに出力しよう。

 

 

解答と解説


// 1. 特定のクラスを持つ要素のテキストを取得する
var articles = parser.query("article .specialClass");

articles.each(function(article) {
  Logger.log(article.text());
});

// 2. 正規表現でメールアドレスを抽出する
var emailPattern = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;
var emails = parser.text().match(emailPattern);

emails.forEach(function(email) {
  Logger.log(email);
});

解説:
queryメソッドは、CSSセレクタを使って特定の元素をターゲットにする。
matchメソッドを用いると、正規表現による文字列の抽出ができる。配列として結果を取り扱うことが可能だ。

もう少しガリガリ勉強して、GAS Parserを使いこなせるようになりたい…!
猫男
猫男
catman
catman
その意気だ!GAS Parserを使いこなせれば、データ取得のプロフェッショナルになれるぞ。積極的に試してみよう!