【问题标题】:use Jsoup to extract html text, but returns unexpected result使用 Jsoup 提取 html 文本,但返回意外结果
【发布时间】:2016-09-22 16:16:40
【问题描述】:

我正在尝试编写一个网络蜘蛛从html页面中提取文本,我使用Jsoup来解析html,简单的代码如下:

File file = new File("test2.html");
Document doc = Jsoup.parse(file, "utf-8");
System.out.println(doc.select("body").text());

如下所示的test2.html:

输出是:

hellothis is a simple testtest link <!-- test here --> <ul> <li>test1</li> <li>test2</li> <li>test3</li> <li>test4</li> <li>test5</li> <li>test6</li> </ul> 似乎 Jsoup 将 textarea 中的代码作为所有文本。 如何删除所有的html标签,只保留真实的文本?

【问题讨论】:

  • 行为是正确的。您可以再次解析textarea中的文本。

标签: java jsoup


【解决方案1】:

正如 fairjm 所指出的,这是预期的行为。

如果你用 jsoup 检查textarea 元素,你会发现:

解决方案

如果您真的只是想去除任何标签 - 即使它们是故意在文本字段中 - 双重解析内容(旁注:当然双重解析会降低性能,但否则它仅针对文本时应该不会有更多缺点):

File file = new File("test2.html");
Document doc = Jsoup.parse(file, "utf-8");
System.out.println(Jsoup.parse(doc.select("body").text(), "UTF-8").text());

输出

hellothis is a simple testtest link test1 test2 test3 test4 test5 test6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多