http://code.google.com/p/phantomjs/
「PhantomJS is a minimalistic, headless, WebKit-based, JavaScript-driven tool.」だそうな。
Windowsのコマンドライン上からHTML中の特定要素を抜き出すことができるっぽい。
簡単な使い方
こちらに載っている「マクドナルドのメニューを表示するサンプル」を、だいぶん参考にさせて頂きました。ありがとうございます。
http://mattn.kaoriya.net/software/lang/c/20110203044300.html
ただ自分の環境だと何故かうまく動かないので以下のように改造しています。(javascriptをガッツリ触ったのは今日が初めてなもんで・・・色々分からない)
//mac_jp.js if (phantom.state.length === 0) { phantom.state = 'mcdonalds'; phantom.open('http://www.mcdonalds.co.jp/menu/regular/index.html'); } else { var list = document.querySelectorAll('ul.food-set>li img'); for(var i=0;i<list.length ; ++i){ var tmp = list[i].getAttribute('alt'); console.log(tmp); } phantom.exit(); }
コマンドラインから起動すると、
phantomjs.exe mac_jp.js
文字化け
文字コードがEUC-JPだと文字化けするようです、UTF-8はOK、Shift-Jisは未検証。
週間ディーバステーションの更新履歴がEUC-JPで書かれていて気がつきました。
http://miku.sega.jp/info/?diary_list
phantomjsに文字コードの設定くらいありそうなんだが・・・
サンプル
SEGA「PSP2インフィニティ スペシャル体験版」運営サイトの更新履歴をダンプ表示してみた。
//psp2i.js if (phantom.state.length === 0) { phantom.state = 'psp2i'; phantom.open('http://www.psp2infinity.jp/pc/trial/'); } else { var list = document.querySelectorAll('div.conts'); for(var i=0;i<list.length ; ++i){ console.log(list[i].innerText); } phantom.exit(); }
google suggestの解析をしてみる
google検索すると出てくる「もしかして」のアレです。
'mikumiku'で試してみた。
//google_suggest.js if (phantom.state.length === 0) { phantom.state = 'suggest'; phantom.open(encodeURI('http://google.com/complete/search?output=toolbar&q=mikumiku')); } else { var suggestion = document.querySelectorAll('toplevel > CompleteSuggestion > suggestion'); for (var i = 0; i < suggestion.length; ++i) { console.log(suggestion[i].getAttribute('data')); } phantom.exit(); }
秀丸エディタの正規表現で抜き出す必要がないので手間が省ける、これは便利だ!!
と思いきや、
キーワードに日本語を使うと「suggestion.length==0」となってしまう。
phantom.open('http://google.com/complete/search?output=toolbar&q=%e3%81%ae%e3%81%b3%e3%81%9f');
phantom.open(encodeURI('http://google.com/complete/search?output=toolbar&q=のびた'));
encodeURIを付けたり外したりしてみたがうまくいかず・・・
javascript初心者にこれ以上はきつい、また後日。