Jsoup:提取文本作为人类会阅读它

时间:2014-06-15 00:04:47

标签: java html jsoup

我需要从HTMl片段中提取所有文本。

示例:

INPUT <p><div>how are</div> you doing?</p><p>I'm doing well</p>

输出how are you doing? I'm doing well

我发现了一些问题,比如这个Text Extraction from HTML Java,它处理类似的问题,但它们都删除了<p>标记,但是没有删除内部元素。

最初,我尝试通过每个<p>标签的子项进行列表并连接其内容,并递归检查每个孙子并连接其子项等等,直到只有文本。问题是某些文本没有被标签包围,只是简单。

我也尝试了Jsoup.parse(html).select("p").text(),但我得到"[]I'm doing well"作为输出。

这似乎是网络抓取器类型程序的一个非常普遍的需求,但我找不到解决方案。

1 个答案:

答案 0 :(得分:2)

试试这个:

Document doc = Jsoup.parse("<p><div>how are</div> you doing?</p><p>I'm doing well</p>");
String body = doc.body().text();