我正在研究必须从网站提取数据的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(),但似乎没有用。
答案 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之间的元素,但这会变得混乱......
希望这有帮助!