Java 使用Jsoup提取html文本,但返回意外结果

Java 使用Jsoup提取html文本,但返回意外结果,java,jsoup,Java,Jsoup,我正在尝试编写一个web spider来从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是一个简单的测试链接 测试1 测试2 测试3 测试4 测试5 测试

我正在尝试编写一个web spider来从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是一个简单的测试链接
  • 测试1
  • 测试2
  • 测试3
  • 测试4
  • 测试5
  • 测试6
Jsoup似乎将textarea中的代码视为所有文本。
如何删除所有html标记,只保留真实文本?

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

如果使用jsoup检查
textarea
元素,您将发现:

  • 它只有一个子节点(返回
    1
  • 子节点是文本节点(返回
    #text
解决方案

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

输出

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

行为正确。您可以再次在textarea中解析文本。
hellothis is a simple testtest link test1 test2 test3 test4 test5 test6