院卒新人サラリーマンのメモ代わり

備忘としてのメモを記載

gasでスクレイピング

tadaken3.hatenablog.jp

この方のライブラリを使うとdom操作のようにスクレイピングができる。
ただ、世の中には有効じゃないxmlが多いらしく、gasのXmlService.parse()がエラーになる。
ググった結果その対処法

//ほぼ定型文でおけ
  var url = 'urlを入力する'  
  var res = UrlFetchApp.fetch(url).getContentText();
  
  var xmlString = Xml.parse(res,true).html.body.toXmlString(); 
  var xml = XmlService.parse(xmlString).getRootElement();

//ここからはhtml見ながら作る
//あるサイトはこんな感じでいけた
  var article = parser.getElementsByTagName(xml, 'article')
  article.splice(0,1)
  
  var data = article.map(function(el){
    var title = parser.getElementsByClassName(el, 'entry-title')[0].getChild('a').getValue()
    var date = parser.getElementsByClassName(el, 'entry-date')[0].getChild('a').getChild('time').getAttribute('datetime')
    var abst = parser.getElementsByClassName(el, 'entry-content')[0].getValue()
    return [date,title,abst]
  })
  
  data.forEach(function(el){
    sheet.appendRow(el)
  })