前提
PhantomJsCloudで動的なWebページをスクレイピングしたいが、
PhantomJsCloudのAPIキーを取得するところでエラーが出てしまう。
実現したいこと
PhantomJsCloudで動的なWebページをスクレイピングする
発生している問題・エラーメッセージ
error
1Exception: 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) 2 3phantomJSCloudScraping @ コード.gs:114
↓和訳
例外です。https://phantomjscloud.com のリクエストに失敗し、コード 401 を返しました。サーバーの応答は切り捨てられています。{"name": "HttpStatusCodeException", "message": "invalid Api Key. a-demo-key-with-low-quota-per-ip-address' を使用するか、アカウントを作成してください。 innerEx... (muteHttpExceptions オプションでフルレスポンスを確認)
該当のソースコード
javascript
1function phantomJSCloudScraping(URL) { 2 //スクリプトプロパティからPhantomJsCloudのAPIキーを取得する 3 let key = PropertiesService.getScriptProperties().getProperty('PHANTOMJSCLOUD_ID'); 4 //HTTPSレスポンスに設定するペイロードのオプション項目を設定する 5 let option = 6 { 7 url: URL, 8 renderType: "HTML", 9 outputAsJson: true 10 }; 11 //オプション項目をJSONにしてペイロードとして定義し、エンコードする 12 let payload = JSON.stringify(option); 13 payload = encodeURIComponent(payload); 14 //PhantomJsCloudのAPIリクエストを行うためのURLを設定 15 let apiUrl = "https://phantomjscloud.com/api/browser/v2/" + key + "/?request=" + payload; 16 //設定したAPIリクエスト用URLにフェッチして、情報を取得する。 17 let response = UrlFetchApp.fetch(apiUrl); ←ここでエラーになります。 18 //取得したjsonデータを配列データとして格納 19 let json = JSON.parse(response.getContentText()); 20 //APIから取得したデータからJSから生成されたソースコードを取得 21 let source = json["content"]["data"]; 22 return source; 23}
試したこと①スクリプトプロパティのKEYの確認
コード上ではPHANTOMJSCLOUD_ID
となっているが、
スクリプトプロパティの方のKEYがAPIKEY
となっていたので、
同じに合わせたが同じエラーが出る
試したこと②デモAPIキー
APIKEY_DEMO
のKEYでデモのAPIキーを入力してみたところ、
以下のエラーがでました。
error
1Exception: 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
1 // var scraping_url = urlArray[0]; ←修正前 ↓修正後 2var 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"; 3 4 //PhantomJsCloud用の独自関数で動的なWebページのHTMLデータを取得する 5 // let html = phantomJSCloudScraping(scraping_url); ←修正前 ↓修正後 6 let html = phantomJSCloudScraping(url_test);
error
1Exception: 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> 2 #dCF_captcha_text%20{ 3 display:%20none%20!important; 4 } 5 .pgHeading%20{ 6 margin:%2010px%200px%2020px%2010px; 7 padding:%2010px%200px%200px%200px; 8 } 9 .pgHeading%20>%20h1%20{ 10 line-height:%2027px; 11 text-align:%20left; 12 margin:%200px%2010px%2020px%200px; 13 font-size:%201.2em; 14 font-family:%20Arial,%20Helvetica,%20sans-serif; 15 font-weight:%20normal; 16 color:%20#5d5d5d; 17 } 18 .pgCenter%20{ 19 margin:%2010px%2010px%2010px%2010px; 20 text-align:%20justify; 21 font-size:%201.1em; 22 } 23%20%20%20%20%20%20%20%20%20%20%20%20.captcha-not-rendered-msg-div%20a:link%20{ 24%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text-decoration:%20underline; 25%20%20%20%20%20%20%20%20%20%20%20%20} 26 27~~後略~~
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/28 13:54
退会済みユーザー
2022/08/28 14:20 編集
2022/09/11 16:55 編集
2022/09/14 10:05