Google Apps Script(GAS)スクレイピングのブログ

Google Apps Script(GAS)スクレイピングのブログ、クローラー、クロール、VBA、RPA、AI、機械学習、ディープラーニング、人工知能、自動化、業務効率化

1ページから複数の項目を取得

今回は、1ページから複数の項目を取得する方法を説明します。

Wikipediaさんから「1」を説明したページの目次1,2,3,4,5を出したいと思います。

https://ja.wikipedia.org/wiki/1

f:id:koyai:20190130143328p:plain

前回と同じように右クリックをし、ソースを覗きます。

f:id:koyai:20190130143608p:plain

目次の1で欲しいのは、「数としての1」という文字列部分です。検索すると出てきます。

<span class="tocnumber">1</span> <span class="toctext">数としての1</span

ここのタブ部分をとれば、目次1が取得できそうです。目次の2は、

<span class="tocnumber">2</span> <span class="toctext">数字としての1</span

を取得すれば、うまくいきそうです。同様に3,4,5のタブを取得していきます。

function myFunction() {

  //urlを指定
  var url = 'https://ja.wikipedia.org/wiki/1';
  
  //htmlソースを取得
  var response = UrlFetchApp.fetch(url).getContentText();
  
  //配列を初期化
  var array = [];
  
  //取得する目次1のタブを指定
  var Regexp = /<span class=\"tocnumber\">1<\/span> <span class=\"toctext\">([\s\S]*?)<\/span/;
  var mokuji1 = response.match(Regexp)[1];
  array.push(mokuji1);
  
  //取得する目次2のタブを指定
  var Regexp = /<span class=\"tocnumber\">2<\/span> <span class=\"toctext\">([\s\S]*?)<\/span/;
  var mokuji2 = response.match(Regexp)[1];
  array.push(mokuji2);//配列に追加
  
  //取得する目次3のタブを指定
  var Regexp = /<span class=\"tocnumber\">3<\/span> <span class=\"toctext\">([\s\S]*?)<\/span/;
  var mokuji3 = response.match(Regexp)[1];
  array.push(mokuji3);//配列に追加
  
  //取得する目次4のタブを指定
  var Regexp = /<span class=\"tocnumber\">4<\/span> <span class=\"toctext\">([\s\S]*?)<\/span/;
  var mokuji4 = response.match(Regexp)[1];
  array.push(mokuji4);//配列に追加
  
  //取得する目次5のタブを指定
  var Regexp = /<span class=\"tocnumber\">5<\/span> <span class=\"toctext\">([\s\S]*?)<\/span/;
  var mokuji5 = response.match(Regexp)[1];
  array.push(mokuji5);//配列に追加
  
  Logger.log(array);
  
}

長くなってしまいましたが、うまくいっています!

f:id:koyai:20190130145439p:plain