2013-04-25 199 views
7

後,我想提取使用jsoup每個標籤後文本的文本。有沒有辦法直接選擇它,或者我必須在整個事情上執行.substring?Jsoup選擇標籤

<div> 
<a href="#"> I don't want this text </a> 
**I want to retrieve this text** 
</div> 

回答

22
public static void main(String... args) throws IOException { 

    Document document = Jsoup.parse("<div>" 
      + "<a href=\"#\"> I don't want this text </a>" 
      + "**I want to retrieve this text**" + "</div>"); 

    Element a = document.select("a").first(); 

    Node node = a.nextSibling(); 
    System.out.println(node.toString()); 
} 

輸出

**I want to retrieve this text** 
+0

謝謝。正是我需要的。 – Mintz 2013-04-25 16:12:06

+0

非常好,謝謝! – Dax 2014-09-13 07:16:00

0

當然可以。

  1. 得到<div>第一的HTML,然後使用.html()
  2. 得到<a>元素選擇它的HTML,並把它的HTML
  3. 得到<a>元素的HTML的長度
  4. 排除的第一部分。
0

我認爲上面的答案缺乏普遍性,儘管提供了一個解決方向。

nextSibling()是unuseble而HTML結構改變。

當我提到Jsoup API時,我找到了一個名爲textNodes()的方法,它可以從這個元素中獲取文本節點列表。

public static String getTextAfterTag(Element ele) { 
    String text = ""; 
    for(TextNode node: ele.textNodes()) { 
    text += node.text(); 
    } 
    return text; 
} 

希望能提供幫助。