Jsoup选择标签后的文字

时间:2013-04-25 15:39:59

标签: java jsoup

我想使用jsoup在每个标记之后提取文本。有没有办法直接选择它,还是我必须在整个事情上执行.substring?

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

4 个答案:

答案 0 :(得分:27)

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**

答案 1 :(得分:0)

是的,你可以。

  1. 首先获取<div>的html,然后使用.html()
  2. 选择其html
  3. 获取<a>元素,并获取它的html
  4. 获取<a>元素的html
  5. 的长度
  6. 排除第一部分。

答案 2 :(得分:0)

我认为,尽管提供了解决方向,但上述答案缺乏普遍性。

当html结构改变时,

nextSibling()无法使用。

当我参考Jsoup api时,我找到了一个名为textNodes()的方法,它可以从该元素中获取文本节点列表。

public static String getTextAfterTag(Element ele) {
  String text = "";
  for(TextNode node: ele.textNodes()) {
    text += node.text();
  }
  return text;
}
希望能提供帮助。

答案 3 :(得分:0)

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

   Elements tags = doc.getElementsByTag("a");

   for(Element tag : tags) {
      System.out.println(tag.text());
   }