我目前正在尝试(或计划尝试)编写一个简单(尽可能简单)的程序,将HTML文档解析成树形结构。
在谷歌上搜索后,我找到了很多答案说“不要这么做,它已经被完成了”(或类似的话),并提供了HTML解析器的示例以及一篇非常强调为什么不应该使用正则表达式的文章。但是,我没有找到任何关于编写解析器的“正确”方法的指南。(顺便说一下,我尝试这个更多是作为学习练习而不是使用预制的解析器,所以我想自己写一个)
我相信通过阅读文档并将标签/文本等添加到树中,在遇到关闭标记时上升一级(同样简单,在这个阶段不需要复杂的线程或效率)。但是,对于HTML,并非所有标记都是关闭的。
因此,我的问题是:您建议采用什么方法来处理这个问题?我唯一想到的想法是像XML一样处理它,但具有不一定关闭的标记列表,每个标记都有关闭条件(例如<p>以</p>或下一个<p>标记结束)。
是否有其他(更好的)建议?总之,有没有更好的方法来完成这项工作?