Google Apps Scriptでスクレイピング

qiita.com

Easy data scraping with Google Apps Script in 5 minutes ~ kutil.org

スクリプト作成

Googleドライブから「新規作成」-「その他」-「Google Apps Script」からスクリプト作成 ※「Google Apps Script」がない場合は「新規作成」-「その他」-「アプリを追加」から「Google Apps Script」を追加

Parserを追加

スクリプト」-「ライブラリ」から「ライブラリを検索」に「M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV」を選択 f:id:imabari_ehime:20160414104805j:plain

function myFunction() {

  var html = UrlFetchApp.fetch('http://www.city.imabari.ehime.jp/').getContentText("Shift_JIS");
  //getContentTextは引数がないとUTF-8、ShitJISの場合は文字化けするので指定

  var lists = Parser.data(html).from('<div id="osirse">').to('</div>').build();
  
  // Logger.log(lists);

  var dt = Parser.data(lists).from('<dt>').to('</dt>').iterate();
    
  // Logger.log(title);
    
  var dd = Parser.data(lists).from('<dd>').to('</dd>').iterate();
  
  // Logger.log(description);
  
  for(i=0;i<dt.length;++i){
    var description = dd[i].replace(/<("[^"]*"|'[^']*'|[^'">])*>/g, '');  //タグ除去
    Logger.log(dt[i] +  ' ' + description)
  }
  
}
  • from().to()はfromとtoに挟まれた部分を抜き出し ※正規表現は使えないの抽出後加工
  • build()で文字列(1つ)
  • iterate()で文字列の配列(複数)

タグ補完されずソースそのままなのでタグが閉じてなかったりすると抽出するのが難しい