类似J汤的C++html解析器
Jsoup like html parser for C++
我一直在用Java编写一些代码来从一些页面获取一些数据,Jsoup是最好的库之一。但是,不幸的是,我不得不将整个代码移植到C/C++。但是我找不到任何像样的html解析器在c++上使用。C++是否有类似J汤的库?或者如何才能获得类似的结果?
[目前我正在使用Curl获取页面的来源,并在互联网上漫游以找到html解析器]
不幸的是,我想没有像Jsoup这样的C++解析器。。。
除了这里已经提到的库之外,这里还有一个关于C++(一些C)解析器的很好的概述:免费的C或C++XML解析器库
对于解析,我使用TinyXML-2进行(Html-)DOM解析;它是一个非常小(只有2个文件)的库,可以在大多数操作系统(甚至非桌面)上运行。
LibXml
- 推拉解析器(DOM、SAX)
- 验证
- XPath和XPointer支持
- 跨平台/良好的文档
Apache Xexces
- 推拉解析器(DOM、SAX)
- 验证
- 没有XPath支持(但有一个包?)
- 跨平台/良好的文档
如果您使用C++CLI,请查看NSoup-用于.NET.的J汤端口
更多:
- 用于C的htmlcxx-html和css API++
- MSHTML(?)
- pugixml(DOM/XPath和Unicode支持)
- LibCSS(CSS Parser)/LibDOM(DOM)(不过,两者都在C中)
- hcxselect(C++的CSS选择器引擎)
也许您可以将DOM模型/解析器和CSS选择器组合在一起?
如果您熟悉Qt Framework,最方便的方法是使用QWebElement(请参阅此处)。
否则,(正如另一篇文章所建议的)使用Tidy将HTML转换为有效的XML,然后使用诸如libxml++之类的XML解析器是一个不错的选择。您可以在这里找到显示这两个步骤的示例代码。
Chromium有一个开源解析器。此外,谷歌口香糖解析器看起来很酷。
是的,有一个用于c++的html解析器库,请查看https://github.com/HamedMasafi/HtmlParser/
这个库可以解析html或css,并将其转换为树模型。您可以通过以下方法在解析后的html中进行搜索:get_by_id、get_by_class_name、get_by_tag_name,还有一个问题方法可以通过css选择器进行搜索(目前仅支持标记、id、类、嵌套子类选择器)。
在找到一个孩子之后,您可以更改它的属性,最后您可以以紧凑和漂亮的模式将html打印成std::string。
您可以使用xerces2作为DOM解析器。
或者使用HTMLTidy清理HTML并将其转换为XHTML,然后使用pugixml或类似的XML解析器解析XML。由于pugixml是一个非验证解析器,它还可以在原始HTML上工作,而不需要首先在上面运行HTMLTidy。
如果你不介意从C++调用python,你可以使用Beautiful Soup。至少这个名字是对的!
说真的,这是一个不错的,没有废话的HTML解析器。我还没有尝试从C++中调用它,尽管它应该是直接的。
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 简单的 HTML 验证器
- 如何在 html 页面中插入 cgi 应用程序的输出?
- 如何以编程方式查找从 html 引用的所有文件
- 是否有用于查询 HTML 表的 SQL 包装器
- 无法将 HTML 格式的 unicode(wchar_t 使用)复制到剪贴板
- 使用 c++/boost::regex 提取 HTML 文件的特定部分
- C++编辑 html 中的 src= " " 标记
- 如何使用c++只查找特定HTML标记的内容
- 导航到 vim 中当前 html 标记的末尾
- 有人可以解释为什么我的XML解析器跳过这些HTML元素的原因
- 编译适用于 HTML 5 的 Minko 引擎 SDK 时出错
- 类似J汤的C++html解析器
- 试图获取位于tar文件中的html文件的内容
- 在C++中生成 HTML 输出的最佳方法是什么
- 在c++/ c++中提取HTML文件的外链
- 是否有一种方法可以检测并显示Internet上HTML文件的更改
- Qt:更改html标签的颜色不起作用
- 如何使用BoostptreeC++解析值中包含HTML标记的XML
- 需要在HTML+JavaScript的客户端和Java/C++的服务器端程序之间进行通信