【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()
という一行でデータを引っ張ってこれます。