我正在寻找算法&用于修复损坏的HTML的数据结构。我知道每种语言都有很多内置工具可以做到这一点。但我想学习这个。我能想到的一些方法是 -
更新:这是我期待的一般性讨论。但是,如果您参考C,C ++,Python或Java中的任何工具,我都可以。
感谢
答案 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。