C++中宽松的HTML解析?

4
我正在寻找一种解决方案,用于在C++中解析可能存在格式错误的HTML,类似于Python中Beautiful Soup所做的。通常,只使用XML解析器就可以解决问题,但在这种情况下,特定的HTML不是有效的XML / XHTML,因此无法正确解析。是否存在此类库/工具?

稍微修改了标题——我预计大多数C++用户不熟悉Beautiful Soup。 - Billy ONeal
重复:http://stackoverflow.com/questions/489522/library-recommendation-c-html-parser - Piotr Dobrogost
@Billy,我希望一个拥有21k声望值的人会将其标记为重复而不是更改标题 :) - Piotr Dobrogost
3个回答

6
你可以使用 HTMLTidy 将 HTML 转换为有效的 XML,然后使用任何可用的 C++ XML 解析器。

1
由于这是开源的C代码,所以你可以(当然要看许可证)将HTMLTidy的核心链接到你的C++二进制文件中。 - Day
@Billy 嗯,这是你被想出的解决方案,因为令人惊讶的是,在C++中没有这样的解析器。至少我之前找不到任何一个。尤其是当你知道大多数(全部?)主要的网络浏览器引擎都是用C++编写的时,这一点尤其令人惊讶。问题在于这些解析器不作为独立组件提供。 - Piotr Dobrogost
我认为这个项目已经被这个项目取代了:HTML Tidy for HTML5 - eonil

2
根据文档,LibXml2 能够解析 HTML4。

-1
我已经使用过 Xerces 并且推荐它给 C++ 开发者。它同时支持 DOM 和 SAX 模型。

2
Xerces 将无法处理非符合标准的文档。也无法解析 HTML。 - Billy ONeal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接