Jsoup选择直接后代与组合器(>)无法正常工作

时间:2014-07-14 23:41:07

标签: jsoup

我有以下HTML:

<table width="100%" border="1" cellspacing="1" cellpadding="0"> 
 <tbody> 
  <tr> 
   <td></td> 
  </tr> 
  <tr> 
   <td>I want this TD</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td></td> 
   <td> 
    <table> 
     <tbody>
      <tr> 
       <td></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td>I don't want this TD</td> 
      </tr> 
     </tbody>
    </table>
    </td> 
  </tr> 
 </tbody> 
</table>

我想选择td,文字“我想要这个TD”

我使用以下查询:

Elements el = tbl.select("tbody > tr:eq(1) > td:eq(0)");
System.out.println(el.toString());

但是我得到了所需的TD和另外一个意想不到的TD:

<td>I want this TD</td>

<td>I don't want this TD</td>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

想出来:我的选择器不够具体。

如果我的桌子周围有<body>之类的父元素,我可以使用选择器

body > tbody > tr:eq(1) > td:eq(0)

将精确选择我想要的<td>

但是如果没有父元素,我的查询过于宽泛,因此它会抓取所需的<td>和<{1}}。