在线等待,循环,随即,WebBrowser问题
先看代码吧,挺郁闷的
===========================================================================================
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.baidu.com/s?wd=%C6%FB%B3%B5"
End Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Dim arr()
Dim a As Object
Dim i, x As Integer
For Each a In WebBrowser1.Document.All
If a.tagname = "A" Then
If Left(a.Id, 3) = "dfs" Then
ReDim Preserve arr(i)
arr(i) = a.Id
i = i + 1
x = Int(Rnd() * (UBound(Split(Join(arr), "dfs")) - 1 - 0 + 1)) + 0
If a.Id = arr(x) Then MsgBox "dfs" & x & " " & a.href
End If
End If
Next
End Sub
========================================================================================
该网站源码格式为:
<a id=dfs0 href="http://www.xxxx...
<a id=dfs1 href="http://www.xxxx...
<a id=dfs2 href="http://www.xxxx...
<a id=dfs3 href="http://www.xxxx...
<a id=dfs4 href="http://www.xxxx...
<a id=dfs5 href="http://www.xxxx...
<a id=dfs6 href="http://www.xxxx...
<a id=dfs7 href="http://www.xxxx...
...
id开头始终为dfs0,根据搜索的关键字最多可以为dfs7
上面的代码获取了打开的网页中有多少个dfs然后取出随即的一个,可是为什么msgbox的时候会是好几个啊,而且弹出的第一个始终是dfs0的啊,是不是代码有问题啊,高手帮忙修改一下啊。。
要达到的效果应该是随即取出来一个的啊。
[解决办法]
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Dim arr()
Dim a As Object
Dim i, x As Integer
For Each a In WebBrowser1.Document.All
If a.tagname = "A" Then
If Left(a.Id, 3) = "dfs" Then
ReDim Preserve arr(i)
arr(i) = a.Id
i = i + 1
x = Int(Rnd() * (UBound(Split(Join(arr), "dfs")) - 1 - 0 + 1)) + 0
End If
End If
Next
For Each a In WebBrowser1.Document.All
If a.tagname = "A" Then
If a.Id = arr(x) Then MsgBox "dfs" & x & " " & a.href
End If
Next
End Sub
第一个循环,取ID,和随即值
第二个循环,MSGBOX
结贴给分,顺便鄙视下