【发布时间】:2014-08-05 04:46:49
【问题描述】:
我需要从 HTMl 片段中提取所有文本。
例子:
输入:<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 Ohhhh... 意外地,我在编写单元测试时输入了
div而不是span(我随后将其复制到这个问题中)。如果我用span标签替换它,它现在可以工作了。很抱歉浪费大家的时间。