在VB.Net中读取HTML文件

在VB.Net中读取HTML文件,vb.net,winforms,dom,Vb.net,Winforms,Dom,我有一些在浏览中显示的文件,然后我使用了文件,另存为。。将文本放置在本地文件中。该页有一些脚本,无法在WinForm上的WebBrowserControl中正确显示。当控件显示“脚本错误”对话框时,问题似乎是脚本。我真的不需要查看文件,只需要按ID检索几个元素 下面的第一段代码将文件加载到本地对象中,但仅加载前4096字节。(如果我使用表单上的WebBrowser,也会发生同样的情况。) 第二个块没有抱怨,但是GetElementByID失败,因为所需的元素超出了第一个4096 Dim

我有一些在浏览中显示的文件,然后我使用了文件,另存为。。将文本放置在本地文件中。该页有一些脚本,无法在WinForm上的WebBrowserControl中正确显示。当控件显示“脚本错误”对话框时,问题似乎是脚本。我真的不需要查看文件,只需要按ID检索几个元素

下面的第一段代码将文件加载到本地对象中,但仅加载前4096字节。(如果我使用表单上的WebBrowser,也会发生同样的情况。)

第二个块没有抱怨,但是GetElementByID失败,因为所需的元素超出了第一个4096

    Dim web As New WebBrowser
    web.AllowWebBrowserDrop = False
    web.ScriptErrorsSuppressed = True
    web.Url = New Uri(sFile)

    Dim doc As HtmlDocument
    Dim elem As HtmlElement
    doc = web.Document
    elem = doc.GetElementById("userParts")
我做错了什么

对于VB.NETWinForm项目,有没有更好的方法来加载HTML文档,从中我可以读取元素


对于手头的简单任务,我只使用了字符串函数:

    Function GetInnerTextByID(html As String, elemID As String) As String
    Try
        Dim s As String = html.Substring(html.IndexOf("<body>"))
        s = s.Substring(s.IndexOf(elemID))
        s = s.Substring(s.IndexOf(">") + 1)
        s = s.Substring(0, s.IndexOf("<"))
        s = s.Replace(vbCr, "").Replace(vbLf, "").Trim
        Return s
    Catch ex As Exception
        Return ""
    End Try
End Function
函数GetInnerTextByID(html作为字符串,elemID作为字符串)作为字符串
尝试
Dim s As String=html.Substring(html.IndexOf(“”)
s=s.Substring(s.IndexOf(elemID))
s=s.Substring(s.IndexOf(“>”)+1)
s=s.Substring(0,s.IndexOf(“我将使用它)


You:“是的,但是对于我的简单任务,即通过ID提取几个元素来说,这太复杂了。”


它还有一个
document.GetElementbyId
方法,非常简单。而且它在脚本或字节方面没有奇怪的问题。只需从web、流、文件或普通字符串加载文档即可

例如(网络):

或从文件:

document.Load("Path")
或者从字符串(例如,由
文件读取的html文件中的整个网页。ReadAllText
):


您可以使用True-但过于复杂来完成我的简单任务,即按ID提取一些元素。它还有一个
document.GetElementById
方法,非常简单。它在脚本或字节方面没有奇怪的问题。只需从web、file或plain string加载文档即可。HtmlAgilityPack很复杂,因为它解决了您正在解决的确切问题现在就要面对。没有它,你的代码本身就会一团糟,效率可能会降低。我永远不会理解人们不愿意将经过验证/测试的第三方库引入他们的项目。
document.Load("Path")
document.LoadHtml("HTML")