たとえばこんなサイトがあるとします。
http://shohei.github.com/counter/
クライアントがHTTPリクエストを送ると、Javascriptのwindow.onload function(){}が呼ばれて
カウンタがスタートします。
で、この数をJavaで取得したい。
Jerichoパーサを使って書いてみた。
遅延時間はThread.Sleep()を使って生成しています。
import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import net.htmlparser.jericho.Element; import net.htmlparser.jericho.HTMLElementName; import net.htmlparser.jericho.Source; public class getUrlData { public static void main(String[] args) throws MalformedURLException, IOException { Source source = new Source(new URL("http://shohei.github.com/counter/")); for (int i=0;i<6;i++){ List<Element> divList = source.getAllElements(HTMLElementName.DIV); for(Element div : divList){ System.out.println(String.format("%s : <%s>" , div.getName(), div.getAttributeValue("value"))); } try{ Thread.sleep(3000); //3000ミリ秒Sleepする }catch(InterruptedException e){} } } }
この出力はこちら。
div : <null> div : <null> div : <null> div : <null> div : <null> div : <null>
んー。JerichoでSourceするだけだとダメなのかな。
Forループのなかに入れてみたけど変わらず。
思ったけど、セッションを新たに作ってるのが原因ぽいな。
どうやったら持続させられるんだろう。(Cookieとか使うのかな?)