使用JSOUP提取数据

时间:2014-04-08 11:09:33

标签: jsoup

我正在研究必须从网站提取数据的API。

网站源代码示例:

<td class="a">Date 1</td>
<a class = b">Comment</a>
<a class = b">Comment</a>
<a class = b">Comment</a>
<a class = b">Comment</a>

<td class="a">Date 2</td>
<a class = b">Comment</a>
<a class = b">Comment</a>
<a class = b">Comment</a>

<td class="a">Date 3</td>
<a class = b">Comment</a>
<a class = b">Comment</a>
<a class = b">Comment</a>

我希望根据日期将数据与JSOUP一起提取到3个不同的视图中。

所以基本上我想使用Elements elements = document.select(&#34; a [class = b]&#34;);这样它只会在日期1和日期2,日期2和日期3,日期3和......之间选择数据。

我尝试使用nextSibling()和hasNext(),但似乎没有用。

1 个答案:

答案 0 :(得分:0)

有几种方法可以通过代码或选择器的组合来处理这个问题。最简单的方法是使用代码(在我看来):

Elements elements = document.select("a[class=b]");
for (Element bElements : elements) {
     for (Element nextElement = bElements.getNextElementSibling(); !nextElement.className().equalsIgnoreCase("b"); nextElement = nextElement.getNextElementSibling()) {
          // Do something with this element between the b classes (nextElement)
     }
}

你也可以在选择器中做一些事情来使用CSS select~和:not to capture 特定TD之间的元素,但这会变得混乱......

希望这有帮助!