実現したいこと
ログイン情報が必要なサイトで個別ページを連続でスクレイピング
発生している問題・エラーメッセージ
ポータルサイトへのログインは出来ているが、そこで取得したクッキーを使用して個別ページへのログインができない。
該当のソースコード
function myFunction() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('URL'); var lastrow = sheet.getDataRange().getLastRow(); //シート内の最終行 var mainsheet = sheet.getRange(1, 1, lastrow,1).getValues(); if(lastrow >0 ){ var LOGIN_URL = "https://auth2.circle.ms/"; var headers = { "User-Agent":"設定していますが、念のため隠させていただきます" }; // POSTオプション var post_options = { method: "post", Username:"ここにはログイン用のメールアドレスが入ります", Password:"ここにはログイン用のパスワードが入ります", ReturnUrl: "https://webcatalog.circle.ms/Account/Login", StayOnError: true, status:"OK", ".AspNet.Consent":"yes", _gat:1, success:1, CirclemsMobileMode:0, deliveryevent157:"done", StayOnError:true, headers: headers, }; // POSTリクエスト var html1 = UrlFetchApp.fetch(LOGIN_URL, post_options).getContentText("UTF-8"); var response = UrlFetchApp.fetch(LOGIN_URL, post_options); // レスポンスヘッダーからcookieを取得 var cookies = response.getHeaders()["Set-Cookie"]; var headers = { "User-Agent":"設定していますが、念のため隠させていただきます", Cookie: cookies }; var get_options = { method: "post", Username:"ここにはログイン用のメールアドレスが入ります", Password:"ここにはログイン用のパスワードが入ります", ReturnUrl: "https://webcatalog.circle.ms/Account/Login", StayOnError: true, status:"OK", ".AspNet.Consent":"yes", _gat:1, success:1, CirclemsMobileMode:0, deliveryevent157:"done", StayOnError:true, headers: headers, muteHttpExceptions: true }; var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('result'); var lastrow2 = sheet2.getRange(sheet2.getMaxRows(), 4).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()+1; var tenkiyou = []; var nom = lastrow2; let hiduke = new Date(); nitiji = Utilities.formatDate(hiduke,"JST", "yyyy/MM/dd"); for(var nowrow = 0; nowrow < lastrow; nowrow++) { //配分表シートの行数分ループ var SCRAPING_URL = mainsheet[nowrow][0]; var html = UrlFetchApp.fetch(SCRAPING_URL, get_options).getContentText("UTF-8"); tenkiyou.push([html1, html, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",]) nom = nom+1; } sheet2.getRange(lastrow2,1,nom-lastrow2,34).setValues(tenkiyou); } }
補足
初心者なりに色々なコードを参考にしたのでキメラ化したコードとなってしまっていますが、とりあえずは動いています。
クッキーはとりあえずで思い当たる物を投げ込んでいる状態です。
URLシートにはA行のセルに1から順に個別ページのURLが羅列されています。
スクレイピング予定の個別ページはhttps://webcatalog.circle.ms/Circle/~(ここに8桁の数字が個別に割り振られています)
となります。R18も一部含まれてしまうので、申し訳ございませんが詳細は割愛いたします。
ログインURLを変えてみたりと色々試したのですが完全に手詰まりとなってしまったため、ご質問となります。
なぜ一度ログインが成功しているクッキーを使用して弾かれてしまうのかが不明のため、ご教授いただければ幸いです。
あなたの回答
tips
プレビュー