ヤフーよりも簡単なHTMLをJTidyでDOM解析。
ヤフーのHTMLははっきり言って読みにくいです。
なのでまずはJTidyに慣れるために、
動作確認の意味も込めて、もっと簡単なHTMLを解析しましょう。
HTML サンプル で検索してでてきたのが↓↓こちら。
http://www.html-cool.com/samples/tryhtml_basic.html
上記サイトのHTMLをInputStreamとして下記のメソッドに渡しました。
Tidy tidy = new Tidy();
tidy.setQuiet(true);
tidy.setShowWarnings(false);
tidy.setForceOutput(true);
Document tidyDOM = tidy.parseDOM(inputStream, null);
System.out.println(tidyDOM.getElementsByTagName("script").getLength());
System.out.println(tidyDOM.getElementsByTagName("body").getLength());
System.out.println(tidyDOM.getElementsByTagName("form").getLength());
実行したところ、コンソールには
4
1
1
と出ました。
http://www.html-cool.com/samples/tryhtml_basic.htmlをブラウザで開いて、
ソースを見てみて欲しいのですが、
<script> タグは確かに4つあります。 ⇒ OK
<body> タグは2つ。 ⇒ ? ⇒ textareaタグ内はカウントされない模様 ⇒ OK
<form> タグは確かに1つあります。 ⇒ OK
なので、JTidyでのDOM構築に成功していると言えます。
また、気になる事がtidy#parseDOMしたときにエラーが出た場合です。
下記の画像のように、今回正常にDOM構築できたわけではなく、
3つほどエラーが出力されています。
エラー内容は、「そのタグの位置おかしいよ」的なことです。
しかし、そのエラーが出た後に、
4
1
1
という結果が出ているので、
エラーが出たとしてもDOMは構築できた!ということです。
これが私が欲しかった結果でした^^
明日またヤフーの解析にチャレンジしてみます。