CasperJS で JQuery を使う
CasperJS は PhantomJS の機能を使って現在扱っているページに対して JS を差し込める。
var casper = require('casper').create({clientScripts: ['jquery-1.9.1.min.js']});
clientScripts にローカルの JQuery へのパスを指定する。phantom.incectJs() を使っているのでリモートのファイルは指定できない。
で、実際に使うには
var url ='http://www.akb48.co.jp/'; var casper = require('casper').create({clientScripts: ['jquery-1.9.1.min.js']}); casper.start(url, function() { this.echo($(title).text()); }); casper.run();
…では動かない。
ReferenceError: Can't find variable: $
とエラーが出る。evaluate() を使う必要がある。
var url ='http://www.akb48.co.jp/'; var casper = require('casper').create({clientScripts: ['jquery-1.9.1.min.js']}); casper.start(url, function() { var title = casper.evaluate(function(){ return $('title'); }); this.echo(title.text()); }); casper.run();
…では動かない。
evaluate() は返り値に primitive object = JSON に変換可能なオブジェクトしか返せないので
var url ='http://www.akb48.co.jp/'; var casper = require('casper').create({clientScripts: ['jquery-1.9.1.min.js']}); casper.start(url, function() { var title = casper.evaluate(function(){ return $('title').text(); }); this.echo(title); }); casper.run();
とする必要がある。
これで
AKB48公式サイト
ちゃんと JQuery を使うことができる。
めんどい。非常にめんどい。