4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Google App Script】Parserライブラリでwebスクレイピングする方法

Posted at

webサイトの情報を収集して、一覧化/整形したいケースってよくありますよね?
その作業を自動で行う仕組みが「webスクレイピング」です。

webスクレイピングは色々なプログラミング言語で実行できますが、GAS(Google App Script)が最適と考えています。
というのも、収集した結果を出力先は、Googleのスプレッドシートが主流だと思うので、同じGoogleのサービス同士を使った方、親和性が高いです。

GASのwebスクレイピングにしようできるライブラリとして調べてみると、Parserというものに関する記事が多かったので、今回はParserライブラリを使ってみます。

Parserライブラリの追加

  1. GASの新プロジェクトを開くと、以下のような画面になります。
    左メニューの「ライブラリ」をクリックします。
    スクリーンショット 2022-07-26 10.21.34.png

  2. 「ライブラリの追加」の画面が出てくるので、ParserライブラリのIDである「1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw」を入力して、「検索」ボタンをクリックします。
    スクリーンショット 2022-07-26 10.25.07.png

  3. Parserライブラリが検索されるので、「追加」をクリックします。
    スクリーンショット 2022-07-26 10.25.33.png

  4. 「ライブラリ」メニューに「Parser」ライブラリが追加されました。
    スクリーンショット 2022-07-26 10.25.45.png

Parserの使い方

  • 収集したいwebサイトの全体のhtmlを取得します。1行目の右辺を取得したいサイトのURLに変更するだけでOKです。
  var url = "[webサイトのURL]";
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText('UTF-8');
  • 以下のコードで取得できます。
  var elem = Parser.data(html).from([開始位置のパターン]).to([終了位置のパターン]).build();

ここで、fromメソッドとtoメソッドに、抽出したい部分の情報を記載します。
例えば、サイトのタイトルを抽出したい場合は、以下のようになります。

  var elem = Parser.data(html).from('<title>').to('</title>').build();

参考記事

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?