Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get attribute string value from html

I am building a macro to extract data from website using vba. Currently I can easily get value from table content using element syntax like obj.getElementsByTagName("td").innerText. However, when there are some non-innerText data in some cells, I am getting trouble. It's like this:

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

I attempted to extract the attribute value from "title" using syntax I found from others:

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

But this code goes error every time and it said "Run-time error '438': Object doesn't support this property or method" at the line dataArray(i, j) = imgObj.getAttribute("title"). Could some one help me?

like image 337
Yeqing Zhang Avatar asked Nov 09 '12 23:11

Yeqing Zhang


People also ask

How can we fetch all attributes for an HTML element?

To get all of the attributes of a DOM element: Use the getAttributeNames() method to get an array of the element's attribute names. Use the reduce() method to iterate over the array. On each iteration, add a new key/value pair containing the name and value of the attribute.

What is attr () in HTML?

In the HTML DOM, an Attr object represents an HTML attribute. An HTML attribute always belongs to an HTML element.


1 Answers

Set imgObj = tdObj.getElementsByTagName("img")

returns a collection of images (even if there's only one to be found), so you can address a specific image using (eg):

dataArray(i, j) = imgObj(0).getAttribute("title")
like image 68
Tim Williams Avatar answered Oct 13 '22 03:10

Tim Williams