Google Apps ScriptでHTML・XMLのスクレイピングをするライブラリを公開してみた
こんにちは!
タダケン(@tadaken3)です。
HTMLやXMLを整形・解析して、必要なデータを取り出すことををスクレイピングといいます。副業のお仕事関係で、Google Apps Scriptを使い、HTMLをスクレイピングする作業が必要になったのでいろいろ調べていたのですが、せっかくなのでHTML・XMLをスクレイピングするためのGoogle Apps Scriptのライブラリを作成してみました。
コードはこちらの記事を参考にさせていただきました。ありがとうございます。
- HTML/XML Parser for Google Apps Scriptのご紹介
- parserライブラリの使い方
- 最後に
- 【追記 2017/01/23】ほかにも良さげなPaserライブラリを見つけました
- 読者登録をお願い致します!
HTML/XML Parser for Google Apps Scriptのご紹介
ライブラリの基本的な情報は以下のとおりです。
まず、スクリプトIDを使って、ライブラリを追加します。 Google Apps Scritpのメニューバーの「リソース>ライブラリ」と辿っていきます。
すると以下の画面が出てくるのスクリプトIDを入力してください。
これでライブラリが追加されました。
parserライブラリの使い方
ライブラリの使い方は簡単です。以下の3つのメソッドで要素を取得します。
- IDを指定するgetElementByIdメソッド
- クラス名を指定するgetElementByClassNameメソッド
- タグを指定するgetElementByTagNameメソッド
IDを指定するgetElementByIdメソッド
getElementByIdメソッドでは、ID名を指定して要素を取得します。
parser.getElementById(対象の要素,ID名)
実際のコードはこのようになります。
var src = '<doc>' + ' <title id="doc-title">Anime Japan Expo</title>' + ' <chapter class="chapter">' + ' <paragraph class="paragraph">Do you like Anime?</paragraph>' + ' </chapter>' + '</doc>'; function parseXMLById() { var doc = XmlService.parse(src), xml = doc.getRootElement(), title = parser.getElementById(xml, 'doc-title'); Logger.log(title.getValue()); }
するとidがdoc-titleの「Anime Japan Expo」がログに出力されます。
クラス名を指定するgetElementByClassNameメソッド
getElementByClassNameメソッドでは、クラス名を指定して要素を取得します。
parser.getElementByClassName(対象の要素,クラス名)
実際のコードはこちらです。
var src = '<doc>' + ' <title id="doc-title">Anime Japan Expo</title>' + ' <chapter class="chapter">' + ' <paragraph class="paragraph">Do you like Anime?</paragraph>' + ' </chapter>' + '</doc>'; function parseXMLByClassName() { var doc = XmlService.parse(src), xml = doc.getRootElement(), paragraph = parser.getElementsByClassName(xml, 'paragraph');//パラグラフを指定してます。 Logger.log(paragraph[0].getValue()); }
クラス名がparagraphの「Do you like Anime?」がログに出力されます。
タグを指定するgetElementByTagNameメソッド
最後に、タグ名を指定するgetElementByTagNameメソッドです。
parser.getElementByTagName(対象の要素,タグ名)
サンプルコードはこのようになります。
var src = '<doc>' + ' <title id="doc-title">Anime Japan Expo</title>' + ' <chapter class="chapter">' + ' <paragraph class="paragraph">Do you like Anime?</paragraph>' + ' </chapter>' + '</doc>'; function parseXMLByTagName() { var doc = XmlService.parse(src), xml = doc.getRootElement(), title = parser.getElementsByTagName(xml, 'title'); Logger.log(title[0].getValue()); }
こちらの場合は、titleタグの「Anime Japan Expo」がログに出力されます。
最後に
今回は、Google Apps ScriptでHTMLやXMLをパースするライブラリ「parser」についてお伝え致しました。HTMLやXMLをパースするイメージを掴んでいただけたでしょうか。Google Apps Scriptでスクレイピングをする際にきっと役立つと思います。:1
【追記 2017/01/23】ほかにも良さげなPaserライブラリを見つけました
「Parser」という同じ名前のライブラリを発見しました。Parsingの仕方が異なりますが、こちらも便利そうです。 ぜひ、参考にしてみてください。
読者登録をお願い致します!
本ブログではPython、Google Apps Scriptの役立つテクニックを公開しています。よろしければ、本ブログの読者もしくはTwitterアカウントのフォロワーになっていただけると更新の励みになります。ぜひ一緒にプログラミングを学びましょう。
詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~
- 作者: 高橋宣成
- 出版社/メーカー: 秀和システム
- 発売日: 2017/12/23
- メディア: 単行本
- この商品を含むブログを見る
-
今回掲載したライブラリは自由に使ってもらって構いません(MIT ライセンス)。↩