【问题标题】:Traverse HTML in depth with jsoup用jsoup深度遍历HTML
【发布时间】:2012-12-09 04:27:50
【问题描述】:

我正在尝试从页面中抓取一些数据,但我是 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()); 
}

【问题讨论】:

    标签: java css-selectors html-parsing jsoup


    【解决方案1】:

    根据目前给出的 HTML 代码,它完全是 &lt;th&gt; 元素,没有 class="text"

    所以,应该这样做:

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

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多