如何使用JSoup从网页中的所有元素中提取文本?

时间:2014-10-17 08:26:20

标签: java html parsing jsoup

这里的问题是,如果我这样做:

Document doc = Jsoup.connect(url)
                        .timeout(30000)
                        .userAgent("Mozilla")
                        .followRedirects(true)
                        .get();
System.out.println(doc.select("body").text());

我把所有文字放在一个块中,我不想要那个。

假设我写了这样的代码:

String part="<div>
               Primary div
               <div>
                 Secondary div
               </div>
             </div>";
                Document doc = Jsoup.parse(part);
                Elements links = doc.select("div");
                for(Element e:links){
                    out.println(e.text());
                    System.out.println(e.text());
                }

输出结果为:

Primary div Secondary div
Secondary div

内部div的文字被抓了两次。

我希望抓取输出应该是这样的:

Primary div
Secondary div

我希望每个元素的文本都是唯一的,不包括子元素中的文本。

如何实现这一目标?嵌套子节点的数量可以多于一个。

1 个答案:

答案 0 :(得分:0)

您没有获得Secondary div的两份副本,而是两次输出它:一次作为Primary div输出的一部分,然后再次单独输出。

如果您只想要一个元素的拥有文本而不是其子元素的文本,请使用Element#ownText