IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

XPathGraph がすごい件と、XPath で出来ることのヒント

XPathGraph とは

http://xpath.kayac.com/
URL と XPath を指定すると一日に一回その URL をスクレイピングして XPath 式が示す値をグラフにしてくれる!という画期的なサービスです。
例えば、 URL と XPath を指定するだけで以下のようなグラフが作れてしまいます。

本当に楽しいことが出来そうでワクワクしてます!

でも

まだ XPath を登録している人が意外と少ないので、「ひょっとして、このサービスの使いどころが分からないのかなあ。」と思いました。

というわけで

XPath で出来ることのヒントを少し紹介したいと思います。

足し算、引き算、かけ算、割り算

XPath では普通に数値の演算ができます。
たとえば、 //div[@class=counter] で取得してきた div 要素が 1000 という数値を持っていたとすると

2 * (//div[@class=counter] + 200)

というようにその数値を計算式にそのまま突っ込むことができます。
ただし、割り算は / ではなく、 div を使います。

//div[@class=counter] div 3

余りを求める演算は mod を使います。

//div[@class=counter] mod 3

これを使えば、例えば単位を変換してグラフにするということも簡単にできますね。

便利な関数郡

XPathGraph はグラフを作るサービスなので、コンテンツから数値を探してこなければならないように思えますが、実はそうとも限りません。
たとえば、以下のようなものをグラフにすることもできそうです。
count を使ってそのページの全要素数をグラフにする。

count(//*)

count を使って特定の要素の数を調べる

count(//ul[@class="userlist"]/li)

string-length を使ってそのページの文字数をグラフにする。

string-length(//*)

具体例としては http://coderepos.org/share/wiki のページで以下の XPath 式を使うと、 CodeRepos のコミッター数をグラフにできます。

count(id("Committers")/following-sibling::ul/li)

などなど

XPath 式は単純なノード取得をするための式ではなく、文字列の操作、数値の演算もできるのです。
ですので、いろいろと考えれば、 XPathGraph の可能性は無限に広がっていくと思います。

まとめ

XPathGraph すごいです!
みなさんも面白いアイデアがあれば何か作ってみてはいかがでしょうか