我正在尝试使用vba代码从另一个网站获取数据,但我不知道如何识别此语句中的括号内的字符串“with htm.getelementbyid(”comps-results“)。从括号中获取字符串,例如this网站
如果有人可以帮我解决这个问题,我将非常感激。
提前谢谢。
Sub GetData()
Dim x As Long, y As Long
Dim htm As Object
Set htm = CreateObject("htmlFile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", "http://www.zillow.com/homes/comps/67083361_zpid/", False
.send
htm.body.innerhtml = .responsetext
End With
With htm.getelementbyid("comps-results")
For x = 0 To .Rows.Length - 1
For y = 0 To .Rows(x).Cells.Length - 1
Sheets(1).Cells(x + 1, y + 1).Value = .Rows(x).Cells(y).innertext
Next y
Next x
End With
End Sub
答案 0 :(得分:0)
getElementByID
方法将唯一ID作为参数,如果有一个具有此ID值的HTML元素,则返回单个HTML元素。
您可能需要做的是使用getElementsByTagName
方法,该方法返回匹配元素的集合。由于这可能导致多次匹配,我发现最好先创建一个对象,然后创建一个迭代器变量:
Dim compresults
Dim el
Set compresults = htm.getelementsbytagname("comps-results")
For each el in compresults
MsgBox el.InnerText
Next
顺便说一句,我相当肯定(但尚未验证)HTMLElementCollection 不有.Rows
成员,因此代码中的下一行可能会引发错误。同样,.Rows
不具有.Length
属性,因此在该单行代码 AND 上至少有两个错误在下一行中,请注意.Cells
不也有.Length
成员,所以另一个错误。
为了帮助您解决代码的这些部分,我建议您提出一个新问题。这个答案解决了你原来的问题。