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

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

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

今回は複数のページから複数の項目を取得したいと思います。前回もお世話になったwikipediaさんのページを取得します。

大量のページを取得する場合、どうしても対象のサーバーに負荷をかけることになります。

そのため各個人の常識が求められます。他人に迷惑をかけてはいけません。サーバーにも迷惑をかけてはいけませんよね!

ここでURLを見てましょう。

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

「1」のページURLを見ると最後のパスが「1」になっています。ここを「2」にすると「2」のページのURLになります。ブラウザで確認しましょう。

https://ja.wikipedia.org/wiki/2
f:id:koyai:20190130174746p:plain

はい、URLを一部変えることで1と2、3のページを取得できそうです!

function myFunction() {

  //urlを指定
  var url = 'https://ja.wikipedia.org/wiki/';
  
  //3回ループを繰り返し
  for(var i=1; i<=3; i++){
    
    //htmlソースを取得
    var response = UrlFetchApp.fetch(url + i).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:20190130152028p:plain