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

时间:2016-09-22 16:16:41

标签: java jsoup

我试图编写一个网络蜘蛛来从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如下所示:

enter image description here 输出是:

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 tages,只保留真实文本?

1 个答案:

答案 0 :(得分:0)

正如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