使用jsoup深入遍历HTML

时间:2012-12-21 15:23:28

标签: java css-selectors html-parsing jsoup

我正在尝试从页面中抓取一些数据,但我是jsoup的初学者 - 而不是经验丰富的java开发人员:)

html示例是:

<tr class="divider">
    <td class="betona text">hello1</td>
    <td>1 712 000</td>
    <td>3 661 000</td>
    <td>1 727 000</td>
    <td>1 011 000</td>
    <td>14 813 000</td>
</tr>
<tr>
    <td class="text">hello2</td>
    <td>1,84</td>
    <td>4,85</td>
    <td>2,29</td>
    <td>1,34</td>
    <td>19,61</td>
</tr>
<tr>
    <td class="text">hello3</td>
    <td>931 739 034</td>
    <td>755 407 422</td>
    <td>755 407 422</td>
    <td>755 407 422</td>
    <td>755 407 422</td>
</tr>
<tr>
      <td>&nbsp;</td>
</tr>
<tr>
    <th class="text">hello4</th>
    <th>2011</th>
    <th>2010</th>
    <th>2009</th>
    <th>2008</th>
    <th>2007</th>
</tr>
<tr>
    <td class="text">hello5</td>
    <td></td>
    <td></td>
    <td>8 800 000</td>
    <td>9 302 000</td>
    <td>9 312 000</td>
</tr>

我可以使用以下代码获取显示hello1 hello2...等的列表 - 但如果这是我唯一需要的,我怎样才能将这些数据放在hello4下面?

931 739 034

755 407 422

755 407 422

755 407 422

755 407 422

我目前使用的java是:

Document document = Jsoup.connect(url).get();

Elements data = document.select("td[class=text]");
System.out.println("datatest1: " + data.first() + "\n");
for (Element dat : data) {
    System.out.println("datatest2: " + dat.text()); 
}

1 个答案:

答案 0 :(得分:0)

根据目前为止提供的HTML代码,它只包含<th>class="text"个元素。

所以,这应该做:

Elements data = document.select("th:not(.text)");

另见: