C++ 使用pugixml或实际的HTML解析器进行HTML解析

C++ 使用pugixml或实际的HTML解析器进行HTML解析,c++,html,html-parsing,pugixml,C++,Html,Html Parsing,Pugixml,我对使用解析HTML文档感兴趣,但HTML有一些。下面是一个例子: Pugixml在遇到未关闭的标记时立即停止读取HTML,但在HTML中,缺少关闭标记并不一定意味着开始-结束标记不匹配 解析pugixml的HTML文档的简单测试失败,因为meta标记是HTML文档的第二行: pugixml 1.0 如果我尝试用pugixml解析大量的HTML文档,那么它们将失败。有没有办法避免这种情况?如果没有办法“修复”这个问题,那么有没有另一个HTML解析工具可以像pugixml一样快 更新 如果HT

我对使用解析HTML文档感兴趣,但HTML有一些。下面是一个例子:

Pugixml在遇到未关闭的标记时立即停止读取HTML,但在HTML中,缺少关闭标记并不一定意味着开始-结束标记不匹配

解析pugixml的HTML文档的简单测试失败,因为meta标记是HTML文档的第二行:


pugixml 1.0
如果我尝试用pugixml解析大量的HTML文档,那么它们将失败。有没有办法避免这种情况?如果没有办法“修复”这个问题,那么有没有另一个HTML解析工具可以像pugixml一样快

更新
如果HTML解析器也支持XPATH,那就太好了。

解决这一问题的一种方法是进行一些预处理,将HTML转换为XHTML,然后将其“正式”视为XML,并可与XML工具一起使用。如果您想走这条路,请看以下问题:

我最终选择了pugixml,将其转换为HTML解析器,并为其创建了一个github项目:

目前它还不完全符合HTML规范,但它在解析HTML方面做得足够好,我可以使用它。我正在努力使它符合HTML规范

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>pugixml 1.0</title>
<link rel="stylesheet" href="pugixml.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="quickstart.html" title="pugixml 1.0">
</head>
<!--- etc... -->