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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

PhantomJsCloudのAPIキーを取得するところでエラーが出る

Risney
Risney

総合スコア142

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0リアクション

1クリップ

558閲覧

投稿2022/08/27 16:56

編集2022/08/28 14:11

前提

PhantomJsCloudで動的なWebページをスクレイピングしたいが、
PhantomJsCloudのAPIキーを取得するところでエラーが出てしまう。

実現したいこと

PhantomJsCloudで動的なWebページをスクレイピングする

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

error

Exception: Request failed for https://phantomjscloud.com returned code 400. Truncated server response: {"name":"HttpStatusCodeException","message":"Invalid URL innerException: The \"url\" argument must be of type string. Received an instance of Arr... (use muteHttpExceptions option to examine full response) phantomJSCloudScraping @ コード.gs:114

↓和訳
例外です。https://phantomjscloud.com のリクエストに失敗し、コード 401 を返しました。サーバーの応答は切り捨てられています。{"name": "HttpStatusCodeException", "message": "invalid Api Key. a-demo-key-with-low-quota-per-ip-address' を使用するか、アカウントを作成してください。 innerEx... (muteHttpExceptions オプションでフルレスポンスを確認)

該当のソースコード

javascript

function phantomJSCloudScraping(URL) { //スクリプトプロパティからPhantomJsCloudのAPIキーを取得する let key = PropertiesService.getScriptProperties().getProperty('PHANTOMJSCLOUD_ID'); //HTTPSレスポンスに設定するペイロードのオプション項目を設定する let option = { url: URL, renderType: "HTML", outputAsJson: true }; //オプション項目をJSONにしてペイロードとして定義し、エンコードする let payload = JSON.stringify(option); payload = encodeURIComponent(payload); //PhantomJsCloudのAPIリクエストを行うためのURLを設定 let apiUrl = "https://phantomjscloud.com/api/browser/v2/" + key + "/?request=" + payload; //設定したAPIリクエスト用URLにフェッチして、情報を取得する。 let response = UrlFetchApp.fetch(apiUrl); ←ここでエラーになります。 //取得したjsonデータを配列データとして格納 let json = JSON.parse(response.getContentText()); //APIから取得したデータからJSから生成されたソースコードを取得 let source = json["content"]["data"]; return source; }

試したこと①スクリプトプロパティのKEYの確認

コード上ではPHANTOMJSCLOUD_IDとなっているが、
スクリプトプロパティの方のKEYがAPIKEYとなっていたので、
同じに合わせたが同じエラーが出る

イメージ説明

試したこと②デモAPIキー

APIKEY_DEMOのKEYでデモのAPIキーを入力してみたところ、
以下のエラーがでました。

error

Exception: Request failed for https://phantomjscloud.com returned code 400. Truncated server response: {"name":"HttpStatusCodeException","message":"Invalid URL innerException: The \"url\" argument must be of type string. Received an instance of Arr... (use muteHttpExceptions option to examine full response)

↓和訳
例外が発生しました。リクエストに失敗しました。https://phantomjscloud.com コード 400 が返されました。サーバーの応答は切り捨てられています。{"name": "HttpStatusCodeException", "message": "Invalid URL innerException. "無効なURLです。引数 "url "は文字列型でなければなりません。Arr...のインスタンスを受信しました。
イメージ説明

試したこと③引数のURLを変える

配列にはいっているURLを引数にしていたが、
直接URLを引数にしたが、無効な引数と言われる

javascript

// var scraping_url = urlArray[0]; ←修正前 ↓修正後 var url_test = "https://www.ebay.com/sh/ord/details?srn=4794&orderid=16-08926-69722&source=Orders&ru=https%3A%2F%2Fwww.ebay.com%2Fsh%2Ford"; //PhantomJsCloud用の独自関数で動的なWebページのHTMLデータを取得する // let html = phantomJSCloudScraping(scraping_url); ←修正前 ↓修正後 let html = phantomJSCloudScraping(url_test);

error

Exception: Invalid argument: <!DOCTYPE%20html><html%20lang="en"><head><meta%20http-equiv="X-UA-Compatible"%20content="IE=Edge"><meta%20name="viewport"%20content="width=device-width,%20initial-scale=1"><link%20rel="icon"%20href="https://pages.ebay.com/favicon.ico"><link%20rel="dns-prefetch"%20href="//ir.ebaystatic.com"><link%20rel="dns-prefetch"%20href="//secureir.ebaystatic.com"><link%20rel="dns-prefetch"%20href="//i.ebayimg.com"><link%20rel="dns-prefetch"%20href="//rover.ebay.com"><script>$ssgST=new%20Date().getTime();</script><meta%20charset="utf-8"><title>Security%20Measure</title><style> #dCF_captcha_text%20{ display:%20none%20!important; } .pgHeading%20{ margin:%2010px%200px%2020px%2010px; padding:%2010px%200px%200px%200px; } .pgHeading%20>%20h1%20{ line-height:%2027px; text-align:%20left; margin:%200px%2010px%2020px%200px; font-size:%201.2em; font-family:%20Arial,%20Helvetica,%20sans-serif; font-weight:%20normal; color:%20#5d5d5d; } .pgCenter%20{ margin:%2010px%2010px%2010px%2010px; text-align:%20justify; font-size:%201.1em; } %20%20%20%20%20%20%20%20%20%20%20%20.captcha-not-rendered-msg-div%20a:link%20{ %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text-decoration:%20underline; %20%20%20%20%20%20%20%20%20%20%20%20} ~~後略~~

補足情報(FW/ツールのバージョンなど)

ログイン時のTokenと勘違いしているわけではないことを確認済みです。
イメージ説明

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。