有没有办法通过VBScript遍历html网页上的所有元素?例如,我想在html网页上获取所有对象信息:http://www.echoecho.com/html.htm
这是我创建的脚本,谢谢:
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.Document..??????... item (i-1)…???
Info = Info & vbCrLf & i & IEObject.id & “-“IEObject.title & “-“ & IEObject.name & “-“ & ….etc.
Next
Wscript.Echo Info
Set IEObject = Nothing
Set objIE = Nothing
答案 0 :(得分:0)
你的问题有点模糊,但我相信这会解决问题:
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
您会注意到我正在使用hasOwnProperty函数来检查给定元素的指定属性是否确实存在。如果没有此检查,VBScript中将发生错误,但JScript中不会发生错误。