質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

2163閲覧

ログイン後の画面をGoogle Apps Scriptでスクレイピングしたいdす

hirory

総合スコア42

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

2クリップ

投稿2018/10/20 19:36

下記サイトにログイン後のページに表示される情報を取得したいです。
https://c0banpool.com/index.php?page=login

GASだけでもUrlFetchApp.fetchでログイン情報をPOSTすることにより、
ログイン後画面からもスクレイピングできるとの記事を読みやってみましたが、
ログインできませんでした。

ctokenの部分がネックなのかもしれません。

宜しくお願い申し上げます。

GoogleAppsScript

1function GetPoolinfo() { 2 var ctoken = GetCtoken() 3 Logger.log(ctoken); 4 //POSTデータ 5 "ctoken="+ ctoken +"&username=??%40gmail.com&password=????" 6 var payload = { 7 "ctoken": ctoken, 8 "username" : "??@gmail.com", 9 "password" : "????" 10 } 11 // POSTオプション 12 var options = { 13 "method" : "POST", 14 "payload" : payload 15 } 16 17 // アクセス先(http headerなどでPOSTのURLなどを調べる) 18 var url = "https://c0banpool.com/index.php?page=login" 19 // POSTリクエスト 20 var response = UrlFetchApp.fetch(url, options); 21 var content = response.getContentText(); 22 Logger.log(content); 23 24 // レスポンスヘッダーからcookieを取得 25 var cookies = response.getHeaders()["Set-Cookie"]; 26 27 // ログインで認証されたcookieはヘッダーで使用 28 var headers = { 'Cookie' : cookies }; 29 options = { 30 method : "get", 31 headers : headers, 32 followRedirects: true, //リダイレクトあり 33 }; 34 var topUrl = "https://c0banpool.com/index.php?page=statistics&action=pool" 35 response = UrlFetchApp.fetch(topUrl, options); 36 var content = response.getContentText("UTF-8"); 37 //Logger.log(content); 38} 39 40function GetCtoken() { 41 // POSTデータ 42 var payload = { 43 id : "loginForm" 44 } 45 // POSTオプション 46 var options = { 47 "method" : "POST", 48 "payload" : payload, 49 "followRedirects" : false 50 } 51 52 // アクセス先(http headerなどでPOSTのURLなどを調べる) 53 var url = "https://c0banpool.com/index.php?page=login" 54 // POSTリクエスト 55 var response = UrlFetchApp.fetch(url, options); 56 var content = response.getContentText(); 57 //Logger.log('============変換後 "%s".',response); 58 59 var step1 = content.match(/<input type="hidden" name="ctoken" value=".*>/g); 60 61 var extract = [] 62 for (var i=0;i<=step1.length-1;i++){ 63 extract.push(step1[i] 64 .replace(/<input type="hidden" name="ctoken" value="/g,"") 65 .replace(/">/g,"") 66 .replace(/\n/g)); 67 } 68 var extract= extract[0]; 69 //Logger.log(extract); 70 return extract; 71} 72

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/10/24 02:05

多分ctokenのせいだと思いますが、例えばpostmanみたいなツールで、ctokenを渡してログインさせることができるか検証してみると、あらかじめ渡したctokenでログインできるかが検証可能だと思います。それができなければ、gasでは本質的に無理じゃないかと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問