【问题标题】:Parse html using C使用 C 解析 html
【发布时间】:2009-10-06 20:20:03
【问题描述】:

我需要从 HTML(XHTML 有效)页面中获取一些内容。我使用 curl 抓取页面并将其存储在内存中。

我尝试了将正则表达式与 PCRE 库一起使用的想法,但是我找不到任何将它与 C 一起使用的示例。然后我继续查看 HTML 解析器,但再次没有一个好的选择。我所能找到的只是一个名为 HTMLparser 的 libxml 文档化模块。

还有其他选择吗?如果没有,那么我已经找到的示例?

【问题讨论】:

标签: html c regex parsing


【解决方案1】:

您想使用 HTML tidy 来执行此操作。 Lib curl 页面有一些源代码可以帮助您前进。遍历 dom 树的文档。您不需要 xml 解析器。在格式错误的 html 上不会失败。

http://curl.haxx.se/libcurl/c/htmltidy.html

【讨论】:

  • 这就是我最终实现的。我觉得不需要拿出一个饥饿的 xml 解析器来抓取一行文本。谢谢
【解决方案2】:

我会使用 libhtmltidy + 任何 xml 解析器,例如 expatlibxml。取决于你在寻找什么。

【讨论】:

  • 仅供读者参考... HTML 解析器是用于自动超文本标记语言 (HTML) 解析的软件。它们有两个主要目的: HTML 遍历:为程序员提供一个接口,以便轻松访问和修改“HTML 字符串代码”。典型示例:DOM 解析器。 HTML clean:修复无效的 HTML 并改进生成标记的布局和缩进样式。规范示例:HTML Tidy。
【解决方案3】:

如果您想使用 C 解析 XML,那么目前最好的方法是使用 LibXML 库。主页位于http://xmlsoft.org/。除了他们的下载之外,他们还有明确的code examples,专门展示了如何处理parsing。我知道你可以获得为 Mac 和 Windows 预编译的版本,大多数 Linux 和 BSD 发行版已经包含它,如果你愿意,你可以从源代码构建。

【讨论】:

  • 不错的选择,但它会阻塞损坏的 html,所以我会先通过 libtidy 运行它。
【解决方案4】:

Google 最近创建了一个纯 C99 库,用于解析 HTML,特别是 HTML5。它很容易在任何 C 程序中使用并积极开发。

https://github.com/google/gumbo-parser

【讨论】:

  • 大部分变化都是2年前的,HTML5标准已经定义好了,是不是代码有点过时了?
【解决方案5】:

快速 C/C++ HTML 5 解析器。使用线程。 https://github.com/lexborisov/myhtml

【讨论】:

  • myhtml 项目似乎即将结束,并提议使用 lexbor (github.com/lexbor/lexbor) 代替。
  • 是的,你是对的。上次更新被替换进去了。
猜你喜欢
  • 2011-04-25
  • 2015-02-12
  • 2010-09-12
  • 2012-07-12
  • 2013-12-13
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多