JavaScript実行後のHTMLをGASで取得する

  • 4
    いいね
  • 0
    コメント

はじめに

Google Apps Script(GAS)でJavaScript実行後のHTMLソースを取得(Webスクレイピング)するのに一手間かかったのでメモ。

GASだと以下のコードでHTMLが取得できます。

 var url = "http://example.com";
 var response = UrlFetchApp.fetch(url).getContentText(); 

が、これだとJavaScript実行前のHTMLが返却されます。
例えば、あるキーワードを検索し結果が反映されたHTMLは取得できません。

そこでPhantomJs Cloudを利用します。

PhantomJs Cloud

https://phantomjscloud.com/

A web-browser hosted as a service, using PhantomJs online (Chrome) to render your javascript heavy webpages as HTML, PDF, JPEG, PNG, or JSON.

JavaScript実行後のWebサイトを画像やisonなどの形式で取得してくれるWebサービスです。

会員登録すると無料枠で、一日100回までリクエストを送れます。

使い方

GETリクエストで取得する場合。

sample.gs
var url = "https://phantomjscloud.com/api/browser/v2/"+[APIKEY]+"/?request=%7Burl:%22http://example.com%22,renderType:%22plainText%22,outputAsJson:true%7D";
var response = UrlFetchApp.fetch(url).getContentText();
var json = JSON.parse(response);
var source = json["content"]["data"].toString();

APIを利用して取得したjsonデータにはヘッダ情報なども含まれているため、パースして取り除いています。