我需要从HTMl片段中提取所有文本。Jsoup:提取文本为人类会读取它
例子:
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"
作为输出。
这似乎是网络爬虫类型程序非常普遍的需求,但我找不到解决方案。
这是HTML的滥用的东西。子元素意味着相关但是独立的内容。因此,你为什么要努力寻找类似的解决方案。你需要实现的是一个递归解决方案,以确保当前元素的所有子元素在进入下一个元素之前都被解析。 – christopher
@christopher Ohhhh ...偶然,当我写单元测试(我后来复制到这个问题)时,我输入'div'而不是'span'。如果我用'span'标记替换它,它现在可以工作。抱歉浪费每个人的时间。 –