2014-04-08 232 views
0

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

网站源代​​码例如:

<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 = document.select(“a [class = b]”);所以它只会选择日期1和日期2,日期2和日期3,日期3之间的数据和...

我试过使用nextSibling()和hasNext(),但它似乎不工作。

回答

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选择〜和:没有捕捉到 具体的TD不过这样会之间的所有元素凌乱...

希望这会有所帮助!