获取将从html显示给用户的文本

时间:2010-06-13 09:59:41

标签: java html nlp screen-scraping

一个随机的,我想要玩一些NLP的东西,我想:

从HTML 获取将在浏览器中向用户显示的所有文字。

我理想的输出中不会有任何标签,并且只会使用fullstops(以及任何其他标点符号)和新行字符,但我可以容忍相当合理的失败量(输出结束的随机其他内容) )。

如果有可能在内容可能不会继续的情况下插入换行符或句号,那么这将被视为额外奖励。 e.g:

ul或option标签中的项目可以用句号分隔(或者说诚实,只是忽略)。

我正在使用Java,但有兴趣看到任何执行此操作的代码。

我可以(并且如果需要的话)提出要做的事情,只是想知道是否有这样的东西已经存在,因为它可能比我在下午提出的更好;-)。

如果我最终执行此操作,我可能会编写的代码示例是使用SAX解析器查找p标记中的内容,删除任何span或强等标记,并在我点击时添加句号一个div或另一个p没有一个完整的停止。

非常欢迎任何指示或建议。

3 个答案:

答案 0 :(得分:2)

嗯...几乎任何HTML解析器都可以用来创建你想要的效果 - 只需运行所有标签并只发出文本元素,并为每个块元素的结束标记发出一个LF。正如你所说,SAX实现简单而直接。

答案 1 :(得分:0)

我会把所有的东西都剥掉了<>标签,如果你想在每个句子的末尾都有一个句号,你可以检查结束标签并完全停止。

如果你有

<strong> test </strong>

(和其他可以改变测试外观的标签)你可以放置条件,不要在这里停下来。

答案 2 :(得分:0)

HTML解析器似乎是一个合理的起点。

其中有很多例如:HTMLCleanerNekohtml似乎工作正常。

他们很好,因为他们修复了标签,以便您可以更加一致地处理它们,即使您只是删除它们。

但事实证明你可能想要摆脱脚本标签元数据等。在这种情况下,你最好使用格式良好的XML,这些人可以从“狂野”的HTML中获取。

有很多与此相关的SO问题(例如this)你应该搜索“HTML解析”; - )