修复损坏的HTML的算法

时间:2011-01-14 07:09:58

标签: algorithm language-agnostic dom data-structures html-parsing

我正在寻找算法&用于修复损坏的HTML的数据结构。我知道每种语言都有很多内置工具可以做到这一点。但我想学习这个。我能想到的一些方法是 -

  1. 使用正则表达式 - 似乎是一种天真的方法
  2. 创建DOM - 但是如何使用损坏的html创建DOM树?
  3. 更新:这是我期待的一般性讨论。但是,如果您参考C,C ++,Python或Java中的任何工具,我都可以。

    感谢

3 个答案:

答案 0 :(得分:3)

使用the HTML 5 parsing algorithm(用于处理破坏)来解析标记,并从中构建DOM。然后,您可以序列化回HTML。

答案 1 :(得分:2)

RegEx + HTML =灾难。

有很多方法可以使HTML成为有效的SGML,但却破坏了RegEx规则。

真的需要有状态的SGML解析器。你没有提到你愿意使用哪种语言,但那里有许多有状态的SGML解析器。

在.NET中,我们经常使用SGMLReader - 一个有状态的解析器,它返回格式良好的DOM和/或XML DOM。

在C中,W3C有一个合理的C SGML Parser

在Java中有一个SAX-style SGML parser

答案 2 :(得分:1)

我同意正则表达方式漫长而曲折的想法:它更加健壮,更容易使用专为阅读破解的HTLM而设计的现有代码。

由于您提到了Python,Beautiful Soup解析器据称可以很好地处理损坏的HTML。