使用JSoup避免无空间串联

时间:2011-08-20 09:41:48

标签: java dom screen-scraping jsoup

假设我有一个div:

<div>
This is a paragraph
written by someone
on the internet.
</div>

问题在于,当JSoup解析它时,它将所有内容放在一行上,这样当我调用text()时,它会这样读取:

This is a paragraphwritten by someoneon the internet.

现在,我意识到这不是真正的JSoup问题,因为实际的html不包含空格。但是,有没有办法使用JSoup(也许是一些覆盖或者可能是一个我没见过的选项),所以当它解析它会在行之间添加一个空格?我想它一定是可能的(因为我可以检查Chrome中的元素并取消选择自动换行并获得我想要的东西)但我不确定JSoup是否可以做到这一点。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您能提供代码的完整示例吗?您使用的是什么版本的jsoup?

在当前版本(1.6.1)中,此代码:

Document doc = Jsoup.parse("<div>\n" +
    "This is a paragraph\n" +
    "written by someone\n" +
    "on the internet.\n" +
    "</div>");
System.out.println(doc.text());

产地:

This is a paragraph written by someone on the internet.

即,\n(和\r\n等)将空格转换为文本。

如果我可以复制,我很乐意修复或改进它。)

答案 1 :(得分:2)

以下文章展示了如何获得包括换行符在内的所有内容

Removing HTML entities while preserving line breaks with JSoup

以下答案和评论还有另一种方式(阅读评论)

Remove HTML tags from a String

如果您检查所有答案和评论

,这个还有另一种方法

How do I preserve line breaks when using jsoup to convert html to plain text?