[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 に投げます。

Code.js
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;
}