从html获取属性字符串值

时间:2012-11-09 23:00:22

标签: excel vba web-scraping

我正在构建一个宏来使用从网站中提取数据。目前,我可以使用obj.getElementsByTagName("td").innerText等元素语法轻松地从表格内容中获取价值。但是,当某些单元格中存在一些非innerText数据时,我遇到了麻烦。就像这样:

<img src="/images/amber_pending.gif" border="0" alt="Pending" title="Pending">

我尝试使用从其他人那里找到的语法从“title”中提取属性值:

For Each tbObj In doc.getElementsByClassName("report removeTdBorder")
    i = 1
    For Each trObj In tbObj.getElementsByTagName("tr")
        If i >= 3 Then
            j = 1
            For Each tdObj In trObj.getElementsByTagName("td")
                If j = 1 Then
                    Set imgObj = tdObj.getElementsByTagName("img")
                    dataArray(i, j) = imgObj.getAttribute("title")
                    Debug.Print imgObj.getAttribute("title")
                    ActiveCell.Offset(0, j) = dataArray(i, j)
                    ActiveCell.Offset(0, j).WrapText = False
                Else
                    dataArray(i, j) = tdObj.innerText
                    Debug.Print i & ", " & j & ": " & dataArray(i, j)
                    ActiveCell.Offset(0, j) = dataArray(i, j)
                    ActiveCell.Offset(0, j).WrapText = False
                End If
                j = j + 1
            Next tdObj
            ActiveCell.Offset(1, 0).Activate
        End If
        i = i + 1
    Next trObj
Next tbObj

但是这段代码每次都会出错,它在行dataArray(i, j) = imgObj.getAttribute("title")处说“运行时错误'438':对象不支持此属性或方法”。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

Set imgObj = tdObj.getElementsByTagName("img")

返回一组图像(即使只有一个图像可以找到),因此您可以使用(例如)来处理特定图像:

dataArray(i, j) = imgObj(0).getAttribute("title")
相关问题