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

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

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

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

Google Apps Script

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

Q&A

1回答

616閲覧

GASからPhantomJsCloud経由でスクレイピングをしたい

Kodanosuke

総合スコア42

スクレイピング

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

Google Apps Script

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

0グッド

1クリップ

投稿2023/07/09 01:21

実現したいこと

PhantomJsCloud経由でスクレイピングをしようとしているが,エラーが発生してしまいサイトの内容を取得できないです.
解決策をご教示いただけないでしょうか?

前提

以下のサイト内の天気,気圧,痛予報の内容を取得して記録するコードを書いています.
動的サイトのため,GASだけではスクレイピングできないため,PhantomJsCloud経由で内容を取得しようとしています.
他のサイト等を参考にしながら以下のコードを書いたが内容を取得できないでおります.

発生している問題・エラーメッセージ

"name":"HttpStatusCodeException","message":"Error extracting userRequest. innerException: JSON5: invalid end of input at 1:1","stack":["no stack or extra properties unless envLevel=DEV|TEST,…

該当のソースコード

Google

1function main_dataStorage() { 2 3 //URL指定 4 var tgtSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('2:取得データ'); 5 6 const url = tgtSheet.getRange("A2").getValue() 7 //getResource関数を呼び出し 8 var APIKEY = tgtSheet.getRange("G2").getValue() 9 var response = getResource(url, APIKEY); 10 11} 12 13 14 15function getResource(target_url, APIKEY) { 16 //HTTPSレスポンスに設定するペイロードのオプション項目を設定する 17 var _options = { 18 method : 'post', 19 url: target_url, 20 renderType: "html", 21 outputAsJson: true, 22 muteHttpExceptions :true, 23 }; 24 25 //オプション項目をJSONにしてペイロードとして定義し、エンコードする 26 var _payload = encodeURIComponent(JSON.stringify(_options)); 27 //PhantomJsCloudのAPIリクエストを行うためのURLを設定 28 var _request = 29 "https://phantomjscloud.com/api/browser/v2/" + 30 APIKEY + 31 "/?request=" + 32 _payload; 33 //設定したAPIリクエスト用URLにフェッチして、情報を取得,エラー発生時は内容を表示 34 35 var _response = UrlFetchApp.fetch(_request, _options).getContentText(); 36 Logger.log(_response) 37 return _response; 38 39} 40

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

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

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

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

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

guest

回答1

0

その書き方でのPhantomJSCloudへのアクセスはGETメソッドで行う必要があります。
_optionsから「method:post」の行を削除してください。

js

1 var _options = { 2 //method : 'post', //削除 3 url: target_url, 4 renderType: "html", 5 outputAsJson: true, 6 muteHttpExceptions :true, 7 };

投稿2023/07/09 02:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問