【Javascript】PhantomJSで簡単スクレイピング

http://code.google.com/p/phantomjs/
Javascriptで動作する「ヘッドレスブラウザ」
参考URL
http://d.hatena.ne.jp/karasuyamatengu/20110126/1296066287

これをスクレイピングに使ってみます。JQueryも使えて楽しい。
今日はこのPhantomJSを使って、【コマンドライン英和辞典】を作ってみます。
ではソースコード(Coffeescript):

JqPageが親クラスで、JQueryを使ってスクレイピングするための基本機能を提供します。
Alcという小クラスで、英和辞典のアルクさんをスクレイピングします。

#!/usr/bin/env phantomjs                                                                                           

# input check                                                                                                      
if(phantom.args.length == 0)
  console.log('please set url.')
  phantom.exit()

class JqPage
  constructor: (@url) ->
    #@alert(@url)                                                                                                  
    @page = require('webpage').create()
    @page.open(@url, @onOpen)
    return this
  onOpen: (status) =>
    if(status == 'success')
      #@alert('open success')                                                                                      
      @page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", @onLoad)
    else
      @alert('fail')
    return

  onLoad: () =>
    #@alert('jquery loaded')                                                                                       
    phantom.exit()
    return

  alert: (str) ->
    console.log(str)
    return this

class Alc extends JqPage
  constructor: (@query) ->
    @url = "http://eow.alc.co.jp/search?q=" + @query
    super(@url)
  onLoad: () =>
    txt = @page.evaluate ->
      $("#resultsList > ul > li:first").text()
    @alert(txt)
    super()

aa = new Alc(phantom.args[0])

このファイルをalc.coffee として保存し、

$ alc.coffee foo

と入力すると、、、

foo
【1名】=foo dog【2名】《コ》フー◆メタ構文変数名。◆【参考】metasyntactic variable ; foobar

出来たー(*´Д`*)
実質

$("#resultsList > ul > li:first").text()


という一行でデータを引っ張ってこれます。