DOMを操作して特定のデータを抽出するスクリプト書いた

Apacheってmod_proxy_balancerていうモジュールを使うとリバースプロキシとして使えて、ブラウザからbalancer-managerていう管理画面にアクセスすると、振り分けっぷりが分かる。だけどいちいちブラウザでぽちぽちリロードすんのめんどくさいので、自動的にログ取るスクリプト書いた。
このページの赤枠のとこだけ引っこ抜きたい。

こんな感じになった。

var uri = WScript.Arguments(0);
var ie = WScript.CreateObject("InternetExplorer.Application");
ie.Visible = true;
while(ie != null){
  startTime = +new Date();
  ie.Navigate(uri);
  while(ie.Busy || ie.readystate != 4){
    WScript.Sleep(100);
  }
  var h3s = ie.document.getElementsByTagName("h3");
  var tables = ie.document.getElementsByTagName("table");
  for(var i = 0; i < h3s.length; i++){
    WScript.Echo(h3s[i].innerText);
    for(var j = 1; j < tables[i * 2 + 1].rows.length; j++){
      WScript.Echo(tables[i * 2 + 1].rows[j].cells[0].getElementsByTagName("a")[0].innerHTML
      + "\t" + tables[i * 2 + 1].rows[j].cells[5].innerHTML
      + "\t" + tables[i * 2 + 1].rows[j].cells[6].innerHTML);
    }
  }
  endTime = +new Date();
  WScript.Echo(new Date() + "\t" + (endTime - startTime) + "\n");
  WScript.Sleep(60000);
}

こんな感じで使う。

>cscript //nologo bmstat.js http://192.168.2.31/balancer-manager
LoadBalancer Status for balancer://backend
http://192.168.2.32/    Ok      11
http://192.168.2.33/    Ok      10
Mon Jan 9 17:59:47 UTC+0900 2012        118

LoadBalancer Status for balancer://backend
http://192.168.2.32/    Ok      11
http://192.168.2.33/    Ok      10
Mon Jan 9 17:59:52 UTC+0900 2012        121

去年の9/27に作ったスクリプト↓を改造したもの。

takanooの日記 - 特定のページを延々リロードしてページ取得にかかった時間を記録するスクリプト書いた