使用VB DOTNET解析HTML

时间:2013-08-23 15:17:56

标签: html vb.net parsing html-parsing web-crawler

我正在尝试从网站解析一些数据,以从他们的表中获取特定项目。我知道bgcolor属性设置为#ffffff或#f4f4ff的任何标记都是我想要开始的标记,而我的实际数据位于第二个标记内。

目前我有:

Private Sub runForm()


    Dim theElementCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("TR")
    For Each curElement As HtmlElement In theElementCollection
        Dim controlValue As String = curElement.GetAttribute("bgcolor").ToString
        MsgBox(controlValue)
        If controlValue.Equals("#f4f4ff") Or controlValue.Equals("#ffffff") Then

        End If
    Next
End Sub

此代码获取了我需要的TR元素,但我不知道如何(如果可能)然后调查内部元素。如果没有,您认为最佳路线是什么?该网站并未真正标记任何表格。我正在寻找的基本上看起来像:

<td><b><font size="2"><a href="/movie/?id=movieTitle.htm">The Movie</a></font></b></td>

我想退出电影&#34;文本并将其添加到文本文件中。

1 个答案:

答案 0 :(得分:0)

使用您拥有的InnerHtml对象(HtmlElement)的curElement属性,如下所示:

For Each curElement As HtmlElement In theElementCollection
    Dim controlValue As String = curElement.GetAttribute("bgcolor").ToString
    MsgBox(controlValue)
    If controlValue.Equals("#f4f4ff") Or controlValue.Equals("#ffffff") Then
        Dim elementValue As String = curElement.InnerHtml
    End If
Next

阅读HtmlElement.InnerHtml Property的文档以获取更多信息。

更新:

要获取<tr> HTML元素的第二个孩子,请使用FirstChild然后NextSibling的组合,如下所示:

For Each curElement As HtmlElement In theElementCollection
    Dim controlValue As String = curElement.GetAttribute("bgcolor").ToString
    MsgBox(controlValue)
    If controlValue.Equals("#f4f4ff") Or controlValue.Equals("#ffffff") Then
        Dim firstChildElement = curElement.FirstChild
        Dim secondChildElement = firstChildElement.NextSibling

        ' secondChildElement should be the second <td>, now get the value of the inner HTML
        Dim elementValue As String = secondChildElement.InnerHtml
    End If
Next