2014-10-17 59 views
0

这里的问题是,如果我这样做:如何使用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 

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

这是如何实现的?嵌套儿童的数量可能不止一个。

回答

0

您没有得到Secondary div的两份副本,您将输出两次:一次作为Primary div输出的一部分,然后再次输出。

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

+0

Thanks @ T.J.Crowder!这就是它。 – 2014-10-17 08:36:16

相关问题