使用jsoup将HTML解析为格式化的纯文本

5

我正在处理一个允许我解析网站上 HTML 数据的 Maven 项目。我使用以下代码成功地解析了它:

public void parseData(){
        String url = "http://stackoverflow.com/help/on-topic";
        try {
            Document doc = Jsoup.connect(url).get();
            Element essay = doc.select("div.col-section").first();
            String essayText = essay.text();
            jTextAreaAdem.setText(essayText);


        } catch (IOException ex) {
            Logger.getLogger(formAdem.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

目前为止,我还没有遇到任何问题。我可以解析html数据。 我一直在使用jsoup的select方法,并使用“div.col-section”检索数据,这意味着我正在查找类为col-section的div元素。 我想要在文本区域中打印数据。结果是一个巨大的段落,即使网站上的实际数据不止一个段落。所以如何像网站上的数据一样解析数据呢?

1个回答

5
不格式化的原因是格式化在HTML中,使用

    等标签。对块元素调用.text()会丢失该格式。Jsoup提供了一个示例HTML转纯文本转换器HTML to Plain Text convertor,您可以通过将div元素作为焦点来适应您的需求。或者,您可以只选择"div.col-section > *",并迭代每个元素,并打印出具有换行符的文本。

HtmlToPlainText is the best java based solution I know. However I couldn't understand why the authors considered hrefs as a part of plain text. I removed the part else if (name.equals("a")) append(String.format(" <%s>", node.absUrl("href"))); - ka3ak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接