はじめに
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
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データにはヘッダ情報なども含まれているため、パースして取り除いています。