我用WebBrowser组件编写一段获取html网页数据。分析得到的数据总是不理想。
    我想分析中国农业银行里面的“理财服务 > 动态行情 > 开放式基金净值公告”表中的数据。可是得到的数据都是农业银行首页上的表格框架中的数据,没有我要的基金中的数据。5555,弄了2天了,苦痛啊!好心的兄弟姐妹们,帮帮忙啊~ QQ:113545560
    先帖一下我的代码。
Private Sub Command1_Click()
    WebBrowser1.Navigate "http://www.abchina.com/cn/hq/jijinjz.jsp/fid=20000020/id=120003850/sid=105000706/index.html"
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    If Not (pDisp Is WebBrowser1.Object) Then Exit Sub
    'On Error Resume Next
    Dim i, j As Long
    Dim Text As String
    Dim Row As HTMLTableRow, Cell As HTMLTableCell, Table1 As HTMLTable, Tables As IHTMLElementCollection
    Set Tables = WebBrowser1.Document.getElementsByTagName("TABLE")
    For Each Table1 In Tables
        For i = 0 To Table1.rows.length - 1       ' 逐行处理
            Set Row = Table1.rows(i)
            j = 0
            For Each Cell In Row.cells       ' 逐列处理
                'Row.cells(j).innerText即为当前行及当前列上的单元数据
                Text = Text + Trim(Row.cells(j).innerText) + "," ’得到数据
                j = j + 1
            Next
            ' 一行处理完毕后,去除行尾的逗号并加上回车
            Text = Left(Text, Len(Text) - 1) + vbCrLf
        Next i
    Next Table1
    Debug.Print Text
End Sub

解决方案 »

  1.   

    我看了一下网页,数据是在《理财服务》里头。你的代码获取的是首页中的数据,这不对了。这一行有问题:Set Tables = WebBrowser1.Document.getElementsByTagName("TABLE") 
      

  2.   

    你要的数据在iframe里面,不是那个网Option ExplicitPrivate Sub Command1_Click()
        WebBrowser1.Navigate "http://www.abchina.com/wwwroot/dynamic/cn/jijinjz.html?timeStamp"
    End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
        If Not (pDisp Is WebBrowser1.Object) Then Exit Sub
        'On Error Resume Next
        Dim i, j As Long
        Dim Text As String
        Dim Row As HTMLTableRow, Cell As HTMLTableCell, Table1 As HTMLTable, Tables As IHTMLElementCollection
        Set Tables = WebBrowser1.Document.getElementsByTagName("TABLE")
        For Each Table1 In Tables
            For i = 0 To Table1.rows.length - 1       ' 逐行处理
                Set Row = Table1.rows(i)
                j = 0
                For Each Cell In Row.cells       ' 逐列处理
                    'Row.cells(j).innerText即为当前行及当前列上的单元数据
                    Text = Text + Trim(Row.cells(j).innerText) + "," '得到数据
                    j = j + 1
                Next
                ' 一行处理完毕后,去除行尾的逗号并加上回车
                Text = Left(Text, Len(Text) - 1) + vbCrLf
            Next i
        Next Table1
        Debug.Print Text
    End Sub