【问题标题】:How to extract text from all the elements in a webpage individually, using JSoup?如何使用 JSoup 从网页中的所有元素中单独提取文本?
【发布时间】:2014-10-17 16:29:34
【问题描述】:

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

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

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

如何做到这一点?嵌套子节点的数量可以不止一个。

【问题讨论】:

    标签: java html parsing jsoup


    【解决方案1】:

    您不会得到两个Secondary div 的副本,而是输出了两次:一次作为Primary div 输出的一部分,然后再次单独输出。

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

    【讨论】:

    • 谢谢@T.J.Crowder!就是这样。
    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 2011-11-02
    • 2017-07-21
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多