• ベストアンサー

HTMLでのTableタグデータ取得方法

Java素人なので、チョット教えて下さい。 HTML表記で書かれたTableタグ(特にTDタグ)内の情報を取得したいのですが 今はsubstringとか使って、<TD>タグ内の情報をコツコツ取得しています。 ここらへんを一気に取得できるAPI関数はないでしょうか? JavaAPIDocを参照しているのですが、いまいち慣れてないて見つけられません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.1

一気に取得できるようなAPIはありませんが、 自分で作るとなったときに便利なものはあります。 javax.swing.text.html.parser.ParserDelegatorと、 javax.swing.text.html.HTMLEditorKit.ParserCallback を使うと、HTMLタグの解釈は楽だと思います。 (substringで部分文字列を切り取るようなことは不要です。) ちょっと長くて申し訳ないですが、サンプルです。 実際に動かして試してみてください。 ---------------------------------------- import java.io.*; import javax.swing.text.MutableAttributeSet; import javax.swing.text.html.parser.ParserDelegator; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.HTML; public class ParserTest{   /**    * 引数でHTMLファイルを指定    */   public static void main(String[] args) throws IOException, FileNotFoundException{     new ParserTest(args[0]);   }   public ParserTest(String file)throws IOException, FileNotFoundException{     ParserDelegator parser = new ParserDelegator();     HTMLEditorKit.ParserCallback mycallback = new MyCallBack();     parser.parse(new FileReader(file), mycallback, true);   }   private static class MyCallBack extends HTMLEditorKit.ParserCallback{     boolean td = false;     public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos){       if (t.equals(HTML.Tag.TD)){         td = true;       }     }     public void handleText(char[] data, int pos){       if (td){         System.out.println(new String(data));       }     }     public void handleEndTag(HTML.Tag t, int pos){       if (t.equals(HTML.Tag.TD)){         td = false;       }     }             } }

macchan0626
質問者

お礼

大変参考になりました。 ありがとうございました!!! まだまだ勉強不足です・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTMLのtableタグでセル毎の幅率を指定したい

    HTMLにtableタグがあると思いますが、 例えば <table> <tr> <td></td> <td></td> </tr> </table> のように左右にセルがあるだけの単純な表を作ったとします。 この場合100ピクセルの幅にして左が70ピクセル、右が30ピクセルみたいに 個々の列で幅の比率を指定したりはできるのでしょうか?

    • ベストアンサー
    • HTML
  • ExcelのVBAでHTMLのタグ数を取得するには

    VBAでHTMLソースからタグ指定で情報を取得したいのですが、そのページ内にある特定のタグ数を取得する方法で躓いています。 例えば、下記のURLの"TD"のtagNameから情報を抜き出しているのですが、他のページでは"TD"タグ数が変わってきます。ループ条件で"TD"のタグ数が必要なので、数を取得して変数として代入したいのですが、どうすれば良いでしょうか。ちなみに下のサイトの"TD"の数は71個です。 http://db.netkeiba.com/horse/ped/2010110097/

  • ScriptがTABLEタグの中に表示されません。

    下記の様にScriptを使ってTABLEタグの中に表示させようと思ったのですが、test2.jsの「あれ?」がTABLEタグ欄に表示されません。 何方かご教授してもらえませんか? ↓↓↓↓<HTML File>↓↓↓↓ <HTML><BODY> <script src="./test1.js"></script> </BODY></HTML> ↓↓↓↓<test1.js File>↓↓↓↓ document.open(); document.write("<TABLE border=1><TBODY><TR><TD>1</TD><TD>おや?<script src=\"./test2.js\"></script></TD></TR><TR><TD>1</TD><TD>1</TD></TR></TBODY></TABLE>"); document.close(); ↓↓↓↓<test2.js File>↓↓↓↓ document.open(); document.write("あれ?"); document.close();

  • Javascript 変数の受け渡しについて

    Javascript 変数の受け渡しについて http://api.twitcasting.tv/api/moviestatus?param=value&movieid=1000 ※ChoromeかFirefox閲覧推奨 こちらのAPIをしようしたいと思うのですが、出力の仕方がわかりません。 例えば1つ目の項目の movieid の値を取得したいときjavascriptではどう表記すればホームページに表示できるようになりますか? つまりmovieidを参照したときに、HTMLで1000と表示されるようにしたいです。(上記のURLの場合) HTMLタグで表記していただけると助かります。 (jsonデータであり、callback関数を呼ぶようになっているのはわかるのですが、初心者の為取得方法がわからないのです。)

  • 正しいHTMLを教えてください

    下記の場合HTML確認ツールで「""」 の終了タグがありません。 と、表示されます。 <TABLE border="0"> <TBODY> <TR><TD><A href="mailto:○○○@△△△.ocn.ne.jp"><p><FONT color="#0000ff" size="+1">場所に合わせた商品構成が出来ますので、こちらからご相談ください。</font></p></td></tr></TBODY></TABLE> 正しいHTMLを教えてください。

  • XOOPSのHTMLタグ記入について

    XOOPS cube2.0を使用しています。 FAQモジュールで、質問/回答の項目を増やし、回答欄でHTMLタグを使用しましたが、どうも表示が不正です。 具体的には、TABLEタグなのですが、TABLEタグを使用してページを表示させた場合、かなり大きな空白が表の上にできてしまいます。 TABLEタグを消すとそういったことがなくなるので、TABLEタグが問題なのか、どうなのか。 ソースを表示させようと右クリックしても表示できないので困ってます。 何かよい助言をいただけないでしょうか。 ●必要事項を入力します。 <TABLE BORDER="1" WIDTH="100%" HEIGHT="100%" CELLSPACING="1" CELLPADDING="1"> <TR> <TD>1-1</TD> <TD>1-2</TD> <TD>1-3</TD> </TR> <TR> <TD>2-1</TD> <TD>2-2</TD> <TD>2-3</TD> </TR> </TABLE> としたときに、●必要事項を入力します。のすぐ下に何行もの空白が表示されます…

  • HTML中のTABLEのデータを抽出する方法

    あるサイトの <table>タグ中のデータを抽出して、エクセルにコピーし そのデータを分析したいと考えています。 具体的にはタグ情報を削除して、データをカンマ(,)区切りで表示し、 それをコピペして、エクセルに貼り付ける方法を考えています。 <table> <tr> <td>100</td> <td>200</td> </tr> <tr> <td>300</td> <td>400</td> </tr> </table> ↓ 100,200 300,400 上記を実現できる方法をご存知でしたらぜひ教えてください。 いろいろ調べたところ、ブックマークレットという方法で できそうですが、マッチするものを見つけることができませ んでした。

  • テーブル(HTML)と画像のレイアウトについて

    WEB画面のレイアウトについて質問があります。 HTMLのtableタグを使ってその中のtdタグにimgタグで画像をセットすると 高さ(height)に微妙な間ができてしまいます。 この現象を回避するにはどうすればよいでしょうか? ↓HTMLソース <table> <tr> <td><img src="GIF画像" alt="XXX" width="755" height="26"></td> </tr> </tabld> ※heightが指定値より若干高くなる どなたか良い回避策をご存知でしたらご教示下さい。 お願いします。

  • perlでHTMLソースを解析してformタグの要素を取得したいのです

    perlでHTMLソースを解析してformタグの要素を取得したいのですが、そのようなライブラリはありますか? できれば、javascriptでHTMLソースから情報を得られるようなAPIだと良いのですが。 即ち、document.forms[].actionとかdocument.forms[].elements[].valueのように。

    • ベストアンサー
    • Perl
  • webbrowserで特定のタグを取得したい

    VB6もしくはVBAです。 HTMLの中をループしてタグを取得しています。 For Each myTag In myIE.Document.all.tags("TD") 次のようなHTMLがあって"このTD"に含まれるAタグを取得したい場合、 指定のTD内だけでループしてAタグを取得するにはどうしたらいいのでしょうか? <table width="200" border="1"> <tr> <td><a href="#">AAAAA</a><a href="#">AAAAA</a><a href="#">AAAAA</a></td> 'このTD <td><a href="#">BBBBB</a><a href="#">BBBBB</a><a href="#">BBBBB</a></td> <td><a href="#">CCCCC</a><a href="#">CCCCC</a><a href="#">CCCCC</a></td> </tr> <tr> <td>DDDDD</td> <td>EEEEE</td> <td>FFFFF</td> </tr> <tr> <td>GGGGG</td> <td>HHHHH</td> <td>IIIII</td> </tr> </table>