2016-10-24 3 views
0

でHTMLのテーブルから情報を取得する私は、このサイト内の最初のテーブルから情報を取得したい LinkトラブルのJava

このそのコードは、情報を取得することができるというイムすべてのテーブルのクラス名が同じで、必要なテーブルを指定するのに問題があり、imもIndexOutOfBoundsExceptionを取得しているため、他のテーブルからコンテンツを取得するという問題が発生しました。

、 時間(タイムテーブル)とし、この時間で、私はその時間分(TD INSIDE)を持つすべての一番下の行を取得したい:この Loglink

の私は、このようにその何かをしたいログの種類次の時間に移動します(...)

あなたの時間です。

[編集] より良いログの例 最初の表を確認してください。

TIME TABLE: 05H 
TD INSIDE: 15 
TD INSIDE: 45 
TIME TABLE: 06H 
TD INSIDE: 15 
TD INSIDE: 35 
TD INSIDE: 45 
TD INSIDE: 55 
TIME TABLE: 07H 
TD INSIDE: 05 
TD INSIDE: 15 
TD INSIDE: 20 
TD INSIDE: 25 
TD INSIDE: 35 
TD INSIDE: 40 
TD INSIDE: 50 
TD INSIDE: 55 

(...)

+0

こんにちは、あなたは明らかにあなたが期待するログを書くことができますか? –

+0

こんにちは、私は期待しているログの種類で質問を編集しました!おかげで – user3000019

答えて

1

あなたはそれを行うことができます。

Element table = document 
    .select("table.easy-table-creator:nth-child(1) tbody").first(); 
Elements trAll = table.select("tr"); 
Elements trAllBody = table.select("tr:not(:first-child)"); 

// For the Table Hour 
Element trFirst = trAll.first(); 
Elements tds = trFirst.select("td"); 
for(int i = 0; i < tds.size(); i++){ 
    Element td = tds.get(i); 
    Log.d("TIME TABLE:", " " + td.text()); 

    String query = "td:nth-child(" + (i + 1) + ")"; 
    Elements subTds = trAllBody.select(query); 
    for (int j = 0; j < subTds.size(); j++) { 
     Element subTd = subTds.get(j); 
     String tdText = subTd.text(); 
     if(!tdText.isEmpty()){     
      Log.d("TD INSIDE:", " " + subTd.text()); 
     } 
    } 
} 

いくつかの興味深いポイント:

  • あなたtable.easy-table-creator:nth-child(1) tbodyセレクタは、ページ内のすべてのテーブルを選択しました。
  • プログレッシブ選択では、特定の列のtdをすべて取得できます。td:nth-child(index);
  • trAllBodyには、tr:not(:first-child)セレクタを使用した最初のものではないtrがすべて含まれています。
+1

ありがとう! tr:not(:first-child)を使うのはとてもスマートです。 – user3000019