(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

CasperJSをインストールして遊んだ

CasperJSというのが可愛いよ、と@師匠より教えてもらったのでちょっとスクレイピングに使ってみたいと思います。

準備

ここを参照しながら、まずはChasperJSが依存しているPhantomJSをインストールします。

$sudo apt-get update
$sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
$bower install phantom      
$cd bower_components/phantom
$./build.sh
$sudo cp ./bin/phantomjs /usr/local/bin 
$phantomjs -v 
1.9.7

これでPhantomJSをインストールすることができました。ビルドにめちゃくちゃ時間かかりますけど、まぁちょっとそこはゲームでもしながら待ちましょう。ちなみに僕はソースコードのダウンロードにbowerを使いました。入れてない人はnpm install -g bowerとかで入れれます。

次にCasperJSですが、

この辺参照でインストールをさくっとしちゃいます。

$npm install -g casperjs
$casperjs 
CasperJS version 1.1.0-beta3 at /usr/lib/node_modules/casperjs, using phantomjs version 1.9.7

インストールが完了しました。

早速遊んでみる

ここをお手本にしてCoffeeScriptで書いてみます。

#casper_scraping.coffee
casper = require('casper').create()

casper.start 'http://casperjs.org/', ->
  @echo @getTitle()

casper.thenOpen 'http://phantomjs.org', ->
  @echo @getTitle()

casper.run()

ソースコードコンパイルして、実行してみます。

$casperjs casper_scraping.js
CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS
PhantomJS | PhantomJS

これでスクレイピングできましたっと。ざくっと遊んでみましたが、わりと面白いですね。

なんだけど、スクレイピング目的で使うものじゃないなと思いました。CSS3セレクタとかXPathセレクタとかもあるんだけど、ちょっと勝手が悪いなぁという印象。スクレイピングするだけならRubyのNokogiriとかのがマシです。
画面キャプチャとかも撮れるぽいし、画面周りのテストに向いてそうだと思いました。*1

*1:実際そういう用途で使うもんだと思う