使用VB / C#/ ASP.NET从HTML页面解析数据

时间:2011-09-17 19:59:09

标签: asp.net vb.net

我已经从网上保存了一些HTML页面...现在我想解析一些特定的数据。我的意思是我想使用VB / C#代码从HTMl页面中检索一些特定的部分。我该怎么做呢?

帮我介绍一些代码示例VB / C#/ ASP.NET。

更新

我正在使用此代码来阅读html文件

Private Sub cmdSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
        Dim oRequest As System.Net.WebRequest
        Dim oResponse As System.Net.WebResponse
        Dim oReader As System.IO.StreamReader
        Dim sResponse As String
        Try
            oRequest = System.Net.WebRequest.Create(txtURI.Text)
            oResponse = oRequest.GetResponse
            oReader = New System.IO.StreamReader(oResponse.GetResponseStream)
            sResponse = oReader.ReadToEnd
        Catch : sResponse = "Could not load page"
        End Try
        txtHTML.Text = sResponse
    End Sub

我现在要做的就是将规格保存到DATABASE。 1.如何选择规格并在ListBox中显示? 2.如何将其保存到DATABASE?

1 个答案:

答案 0 :(得分:0)

您可以查看Html Agility Pack。它是一个非常好的库,用于解析HTML流并提取您可能需要的任何信息。这是一个example


更新:

根据评论部分的要求,这里有一个示例,说明如何从以下地址http://www.sony.co.in/product/vpcea4bgn获取笔记本电脑的规格:

Using client = New WebClient()
    client.Headers(HttpRequestHeader.UserAgent) = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2"
    Dim doc = New HtmlDocument()
    doc.LoadHtml(client.DownloadString("http://www.sony.co.in/product/vpcea4bgn"))
    Dim specs = doc.DocumentNode.SelectNodes("//ul[@class='featuresList BodyText']/li/text()")
    For Each spec As HtmlNode In specs
        Dim value = spec.InnerText.Trim()
        If Not String.IsNullOrEmpty(value) Then
            ' TODO: Save the specification to your database or something
            Console.WriteLine(value)
        End If
    Next
End Using

请注意,屏幕抓取是脆弱的,当索尼更改其HTML结构时,您的应用程序将会严重失败。