剥离HTML但保留块/内联结构

时间:2010-12-09 09:11:30

标签: html filter text-processing text-extraction text-formatting

我想将HTML转换为纯文本,但保留最小结构。

  • 包含只有浏览器需要的内容的所有部分都需要查看,例如< script>和< style>完全剥离。
  • 将所有块标记转换为< div>和所有内联的< span> 完全删除内联而不留空格,并将块级别下划线的任何内容转换为包含两个换行符的段落。

我们的想法是将随机网页转换为适合自然语言文本处理的内容,而不会遗漏人工制品,从而人为地删除标记,从而破坏单词或使不相关的单块看起来像句子。

任何编程语言的任何二进制文件,库或源都可以。

是否存在标准来源,最好是机器可读的,其中包含完整的元素列表,这些元素定义哪些是块,哪些是内联的,哪些类似于< script>和< style>以上?

3 个答案:

答案 0 :(得分:1)

HTML 4块级元素列表位于:http://htmlhelp.com/reference/html40/block.html

Perl最流行的HTML解析库是HTML::Parser,它是一个SAX风格的解析器,而HTML::TreeBuilder更像DOM。

除此之外,您还必须确定哪些元素很重要,哪些元素不是基于您尝试的内容。

答案 1 :(得分:0)

您可能想自己做一些研究。然后,当您遇到问题时,请询问与问题相关的问题。这听起来更像是您希望有人为您做的项目的规范。

首先,网站使用各种标签,问题非常复杂。您可能希望在h#和p标记中保存信息,但如果使用id标记,您也可能希望保存div标记信息。简而言之,您必须为您遇到的每个网站编写规则,或采用某种模糊逻辑。

不是在逐个标签的基础上进行,为什么不尝试检测句子和语法,或者可能在标题中的内容,并选择包含这些内容的标签,同时剥去其余部分?

答案 2 :(得分:0)

这是我自己的工具,使用HTML :: Parser作为github要点在Perl中解决这个问题:html2txt.pl

它尚未完成,可能略微以Windows为中心,但我想我会分享它,因为有些人在这里查看了我的问题。随意玩吧。