【问题标题】:How do you parse an HTML in vb.net您如何在 vb.net 中解析 HTML
【发布时间】:2010-10-05 17:35:44
【问题描述】:

我想知道是否有一种简单的方法可以在 vb.net 中解析 HTML。 我知道 HTML 不是 XML 的严格子集,但如果可以这样对待它会很好。有什么东西可以让我在 VB.net 中以类似 XML 的方式解析 HTML 吗?

【问题讨论】:

  • 如果你在解析后说明你想用它做什么,它可能会帮助我们回答。
  • 现在,我对能够选择特定 div 中的所有链接、文本和图像感兴趣。 div 类或 id 将/可能会因页面而异。
  • 听起来 HTML 敏捷包可能对我有用。还有其他选择吗???

标签: .net html vb.net parsing html-content-extraction


【解决方案1】:

'也添加 prog ref: Microsoft.mshtml

'然后在页面上:

Imports mshtml

Function parseMyHtml(ByVal htmlToParse$) As String
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass()
    htmlDocument.write(htmlToParse)
    htmlDocument.close()

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all

    Dim allInputs As IHTMLElementCollection = allElements.tags("a")
    Dim element As IHTMLElement
    For Each element In allInputs
        element.title = element.innerText
    Next

    Return htmlDocument.body.innerHTML
End Function

如发现here:

【讨论】:

  • 这不是本质上使用 IE 用来加载其 DOM 的相同库吗?我以前试过这个,但总感觉很脏……
【解决方案2】:

我喜欢Html Agility pack - 它对开发人员非常友好、免费且源代码可用。

【讨论】:

  • 但自文档代码开发人员友好。我知道“开发人员友好”一词可能非常主观,但是我尝试了几种解析/修改 HTML 代码的方法,而这个最简单(对于 .NET 和免费),你可以获得什么并且没有文档不要改变它。这是残酷的现实。
  • 我无法让 HTML Agility 包为我做任何有用的事情。我得到的只是直接输出到文本框的 HTML,而不是经过解析的格式化 HTML。
  • @JoelR。你做了一件大错特错的事。你读过一些相关的教程吗?
  • @Tcks 我似乎没有在 CodePlex 上找到任何教程。但我也没有看起来太难。如果你有一些好的教程的链接,那会很有帮助。
  • 在 google 中使用“html 敏捷包教程”。你不能错过目标。
【解决方案3】:

不要使用敏捷包,只使用mshtml库访问dom,这就是ie使用的,非常适合浏览HTML元素。

如果你问我,Agility 包是讨厌的和不必要的 hackie,mshtml 是要走的路。在 msdn 上查找。

【讨论】:

    【解决方案4】:

    如果您的 HTML 遵循 XHTML 标准,您可以使用 System.XML 命名空间类进行大量解析和处理。

    另一方面,如果您要解析的是 Web 开发人员所说的“标签汤”,您将需要像 HTML Agility Pack 这样的第三方解析器。

    如果您试图弄清楚浏览器将如何解释您的 HTML,因为每个浏览器对标签汤的解析略有不同,这可能只是您问题的部分解决方案。

    【讨论】:

      【解决方案5】:

      格式是否正确?如果 HTML 实际上格式正确,则可以将其解析为 XML。如果是标签汤并且有未封闭的元素等,我认为您将不得不四处寻找第三方解决方案。

      【讨论】:

      • 使用 mshtml 访问文档对象模型 (dom) 发生了什么?
      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2015-06-06
      相关资源
      最近更新 更多