複数のページから複数の項目取得
今回は複数のページから複数の項目を取得したいと思います。前回もお世話になったwikipediaさんのページを取得します。
大量のページを取得する場合、どうしても対象のサーバーに負荷をかけることになります。
そのため各個人の常識が求められます。他人に迷惑をかけてはいけません。サーバーにも迷惑をかけてはいけませんよね!
ここでURLを見てましょう。
https://ja.wikipedia.org/wiki/1
「1」のページURLを見ると最後のパスが「1」になっています。ここを「2」にすると「2」のページのURLになります。ブラウザで確認しましょう。
https://ja.wikipedia.org/wiki/2
はい、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); } }
ログとみてみましょう!うまくいっています!