2014-01-22 57 views
0

我正在嘗試處理大量的研究項目數據。我的計算機上有許多html文件,我需要將一些信息讀入Java程序。在java中使用JSoup解析無ID的html表格

我使用Jsoup來加載文檔。

不幸的是,html中的表沒有類或id(並且有多個表)。我已經搜索堆棧,但我發現使用table.class的所有答案。

如何從下表中獲取數據(18/01/2014)?該doc.select現在沒有工作,因爲缺少類的,我認爲

I am trying something like this: 

    Element table = doc.select("table").first(); 

      Iterator<Element> ite = table.select("td").iterator(); 

      ite.next(); 

      System.out.println("Value 1: " + ite.next().text()); 
      System.out.println("Value 2: " + ite.next().text()); 
      System.out.println("Value 3: " + ite.next().text()); 
      System.out.println("Value 4: " + ite.next().text()); 




<table border=0 cellpadding=0 cellspacing=0 width=650 height=18><tr><td class="header" style="color:#FFFFFF;"><table border=0 cellpadding=0 cellspacing=0><tr> 
<td><img src="/images/title_ultratop.png"></td><td style="color:#FFFFFF;vertical-align:middle;"><b>50 DANCE<br> 
<a href="link"><img src="/images/arr_bw.png" border=0 style="margin-bottom:1px;margin-right:3px;"></a>18/01/2014 
</b></td></tr></table> 

- 編輯

我發現桌子上放着另一個表內。使用這個代碼我可以得到它,但我現在只能得到1行。就在桌子旁邊,我需要從中取出一個元素。

Element table = doc.select("table table").first(); 

      for (Element row : table.select("tr")) { 
        Elements tds = row.select("td"); 
        System.out.println(tds.get(0).text()); 

      } 

我想我現在正在顯示整個表格。如何讓我們說第二個元素?

回答

2

你的html中有一些問題。我想正確的是:

<table border="1" cellpadding="0" cellspacing="0" width="650" height="18"> 
    <tr> 
     <td class="header" style="color:#FFFFFF;"> 
      <table border="1" cellpadding="0" cellspacing="0"> 
       <tr> 
        <td><img src="/images/title_ultratop.png"></td> 
        <td style="color:#FFFFFF;vertical-align:middle;"> 
         <b>50 DANCE 
         <br> 
         <a href="link"><img src="/images/arr_bw.png" border="0" 
              style="margin-bottom:1px;margin-right:3px;"></a> 
         18/01/2014 
         </b> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 

爲了讓你必須選擇節點:table表TD B,然後拿到第4個孩子節點(文本節點):

Elements td = doc.select("table table td b"); 
    TextNode el = (TextNode)td.first().childNode(4); 
    System.out.println(el.text()); 
0

對,第三個嵌入表,它的工作原理。

Element table = doc.select(「table table」)。first();

仍然需要在網站上選擇不同的表格。我讀了關於表:包含(單詞)。希望這個字!