想用webbrowser控件获取网页内容(非源码)
利用其body.innertext,可是出现问题,就是首先赋予webbrowser网页链接,紧接着一个语句就是取网页内容,但是每次取内容都没取到,因为webbrowser的网页还没有完全打开,取网页内容的语句已经执行了请教高手如何用语句判定及等待webbrowser载入完毕再执行取网页内容的语句感谢
利用其body.innertext,可是出现问题,就是首先赋予webbrowser网页链接,紧接着一个语句就是取网页内容,但是每次取内容都没取到,因为webbrowser的网页还没有完全打开,取网页内容的语句已经执行了请教高手如何用语句判定及等待webbrowser载入完毕再执行取网页内容的语句感谢
If WebBrowser1.Busy = False Then
'............
End If
End Sub
***Complete事件
BeforeNavigate2 导航发生前激发,刷新时不激发
CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward
菜单项或按钮
DocumentComplete 当整个文档完成是激发,刷新页面不激发
DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件
DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件
————————————————————————————————————
用这句怎么样? DocumentComplete()
我是在webbrowser1.navigate(url)后面加入
while webbrowser1.busy=true
sleep 1000
wend
tex=webbrowser1.document.body.innertext这样写的 ,但是直接跳过去了,程序执行完了 可是网页是在程序执行后的几秒钟才打开 取到的还是当前页面不可用字样
WebBrowser1.Navigate ("www.baidu.com")
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If pDisp Is WebBrowser1.Object Then tex = WebBrowser1.Document.body.innertext
End Sub
执行时提示document.all.imgspinfo 为空 的错误提示,我用silent屏蔽了,其实不屏蔽选择继续执行也不成
也是没有调用complete 不知道是不是缺少这个对象造成的不调用complete
...
WebBrowser1.navigate "bbs.csdn.net"
End SubPrivate Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set page = Me.WebBrowser1.document.parentWindow
End SubPrivate Sub page_onload()
Debug.Print "加载完毕"
End Sub
HTML Object那里有详细点的资料啊
然后说明下
我是写的循环打开多个网页取内容
主程序中打开一个网页,判断成功后立刻取代码,然后进入循环打开第二个网页可是利用page_onload事件修改某变量值,然后在主程序中利用sleep循环等待,判断此变量值被赋予新值后取网页内容,但是执行后死掉了,进入死循环了,一直在sleep
WebBrowser2.Silent = True
for i=0 to 100
WebBrowser2.navigate (combo1.list(i))
Text4.Text = "no"
While Text4.Text = "no"
Sleep 100
Wend
If Text4.Text = "ok" Then Text3.Text = text3.text+WebBrowser2.document.body.innerText
next
End Sub
Private Sub WebBrowser2_navigatecomplete2(ByVal pdisp As Object, url As Variant)
Set page = Me.WebBrowser2.document.parentWindow
End Sub
Private Sub page_onload()
Text4.Text = "ok"
End Sub大致是这个意思
Sleep 1 '改成1
DoEvents '加上DoEvents,否则navigatecomplete2事件和onload事件在消息队列中堆积,造成form不能正常接收事件
Wend