【问题标题】:How to parse bad html?如何解析坏的html?
【发布时间】:2012-05-23 13:28:52
【问题描述】:

我正在编写一个搜索引擎,它可以访问我公司所有附属网站,解析 html 并将它们存储在数据库中。这些网站非常老旧,在 100000 个网站中不兼容 html,大约 25% 的网站的 html 不好,难以解析。我需要编写一个可能修复错误 html 的 c# 代码,然后解析内容或提出解决上述问题的解决方案。如果您有想法,实际的提示或代码 sn-p 会有所帮助。

【问题讨论】:

  • 我知道 Wordpress 有一个自动更正的 html 代码,你可以查看它的源代码,看看他们是如何做到的 - 并尝试相同的逻辑
  • 不好的 html 是什么意思?如果标签没有关闭,我认为解析将是一场噩梦。

标签: c# html regex


【解决方案1】:

只需使用Html Agility Pack。解析错误的html代码非常好

【讨论】:

  • -1 到 HAP:它“解析”了它,但在我尝试过的许多页面上得到了完全错误的 DOM 模型。
【解决方案2】:

人们通常使用某种形式的启发式驱动 tag soup 解析器。

例如对于

这些大多只是词法分析器,它们尽最大努力从所有随机符号构建 AST。

【讨论】:

    【解决方案3】:

    使用 tagoup 解析器,我确定是 one for C#。然后,您可以将 DOM 序列化为或多或少有效的 HTML,具体取决于该解析器是否符合 HTML DTD。或者,您可以使用HTML Tidy,它至少可以清除最严重的故障。

    正则表达式不适用于此任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多