[Google Apps Script] PhantomJsCloud を利用して JavaScript で生成されているコンテンツをスクレイピングする
サンプルでは Google Apps Script の UrlFetchApp.fetch()
を利用していますが、その他の言語でも HTTP Endpoint へのリクエストの投げ方は同じです。
API キーを取得する
おおよそ 500 Pages/日 が Free plan に登録することで利用できます。
メールアドレスのみで登録できます。
登録完了後、https://dashboard.phantomjscloud.com に API キーが表示されていますので控えます。
ドキュメントを確認する
ドキュメントが読みづらいのですが GET HTTP-Request を送りたいのでこちらを参考にします。
ドキュメント内の下記記述が気になったのですが、Request-JSON forms を使わない方法が分かりませんでした。
DEPRECATED The following Request-JSON forms are deprecated in favor of the new Automation API, but you can still use them if you need:
サンプルコード
ドキュメントに従い [APIKEY]
とエンコードした [REQUEST-JSON]
を phantomjscloud.com に投げます。
var APIKEY = "";
function myFunction() {
var url = "";
var response = getResource(url);
var source = parseResponse(response);
Logger.log(source);
}
function getResource(target_url) {
var _options = {
url: target_url,
renderType: "html",
outputAsJson: true
};
var _payload = encodeURIComponent(JSON.stringify(_options));
var _request =
"https://phantomjscloud.com/api/browser/v2/" +
APIKEY +
"/?request=" +
_payload;
var _response = UrlFetchApp.fetch(_request).getContentText();
return _response;
}
function parseResponse(response) {
var _json = JSON.parse(response);
var _source = _json["content"]["data"];
return _source;
}