Is there a way to traverse all elements on an html web page by VBScript? For example, I want to get all the object information on an html web page: http://www.echoecho.com/html.htm
Here is the script I have created, thanks:
Dim objIE
Dim IEObject
Dim Info
Info = “”
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://www.echoecho.com/html.htm"
Do While objIE.Busy Or (objIE.READYSTATE <> 4)
Wscript.Sleep 100
Loop
WScript.Sleep 50
‘ Can I use objIE.Document.all.Item.length to count all elements on the webpage?
For i=1 to objIE.Document.all.Item.length then
IEObject = objIE.Docume开发者_开发技巧nt..??????... item (i-1)…???
Info = Info & vbCrLf & i & IEObject.id & “-“IEObject.title & “-“ & IEObject.name & “-“ & ….etc.
Next
Wscript.Echo Info
Set IEObject = Nothing
Set objIE = Nothing
You question was a bit vague, but I believe this will do the trick:
Dim objIE, IEObject, Info, all, hasOwnProperty
Info = ""
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://www.echoecho.com/html.htm"
Do While objIE.Busy Or (objIE.READYSTATE <> 4)
Wscript.Sleep 100
Loop
WScript.Sleep 50
Set hasOwnProperty = objIE.Document.ParentWindow.Object.prototype.hasOwnProperty
' Can I use objIE.Document.all.Item.length to count all elements on the webpage?
Set all = objIE.Document.all
For i = 0 To all.Item.Length - 1
Set IEObject = all.Item(i)
'If this is not the first item, place this data on a new line.
If i > 0 Then Info = Info & vbCrLf
' Number each line.
Info = Info & i + 1 & ". "
' Specify the ID if it is given.
If hasOwnProperty.call(IEObject, "id") Then
Info = Info & IEObject.id
Else
Info = Info & "[NO ID]"
End If
' Specify the title if it is given.
If hasOwnProperty.call(IEObject, "title") Then
Info = Info & "-" & IEObject.title
Else
Info = Info & "-[NO TITLE]"
End If
' Specify the name if it is given.
If hasOwnProperty.call(IEObject, "name") Then
Info = Info & "-" & IEObject.name
Else
Info = Info & "-[NO NAME]"
End If
Next
Wscript.Echo Info
Set IEObject = Nothing
Set objIE = Nothing
You will notice that I am using the hasOwnProperty function in order to check whether or not the specified property actually exists for the given element. Without this check, errors will occur in VBScript, but not in JScript.
精彩评论