想用webbrowser控件获取网页内容(非源码)
利用其body.innertext,可是出现问题,就是首先赋予webbrowser网页链接,紧接着一个语句就是取网页内容,但是每次取内容都没取到,因为webbrowser的网页还没有完全打开,取网页内容的语句已经执行了请教高手如何用语句判定及等待webbrowser载入完毕再执行取网页内容的语句感谢

解决方案 »

  1.   

    Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
        If WebBrowser1.Busy = False Then
        '............
        End If
    End Sub
      

  2.   

    怎么又是这个问题啊
    ***Complete事件
      

  3.   

    WebBrowser 的事件 :
    BeforeNavigate2 导航发生前激发,刷新时不激发 
    CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward 
    菜单项或按钮 
    DocumentComplete 当整个文档完成是激发,刷新页面不激发 
    DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件 
    DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件 
    ————————————————————————————————————
    用这句怎么样? DocumentComplete()
      

  4.   

    这个方法不行
    我是在webbrowser1.navigate(url)后面加入
    while webbrowser1.busy=true
    sleep 1000
    wend
    tex=webbrowser1.document.body.innertext这样写的 ,但是直接跳过去了,程序执行完了 可是网页是在程序执行后的几秒钟才打开 取到的还是当前页面不可用字样
      

  5.   

    Private Sub Command1_Click()
        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
      

  6.   

    郁闷了  网页加载完毕了 竟然没有加载documentcomplete事件
      

  7.   

    documentcomplete也不行
    执行时提示document.all.imgspinfo 为空 的错误提示,我用silent屏蔽了,其实不屏蔽选择继续执行也不成
    也是没有调用complete   不知道是不是缺少这个对象造成的不调用complete
    ...
      

  8.   

    如果页面中有框架(Frame/IFrame)DocumentComplete将会触发多次,而且触发的顺序是从内至外.你得在最外层Document加载完成后再执行你的操作(比如说执行脚本).
      

  9.   

    上面的代码中Navigate最好改为Navigate2。不过最好使用window_onload事件来判断是否加载完毕,这样刷新时可以判断,比如:Dim WithEvents page As HTMLWindow2Private Sub Form_Load()
        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
      

  10.   

    LS你这些在哪看到的?
    HTML Object那里有详细点的资料啊
      

  11.   

    引用“Microsoft HTML Object Library”。
      

  12.   

    首先 先感谢一下
    然后说明下
    我是写的循环打开多个网页取内容
    主程序中打开一个网页,判断成功后立刻取代码,然后进入循环打开第二个网页可是利用page_onload事件修改某变量值,然后在主程序中利用sleep循环等待,判断此变量值被赋予新值后取网页内容,但是执行后死掉了,进入死循环了,一直在sleep  
      

  13.   

    如果单独执行的话 onload事件是被执行了  但是将这些代码加入到主程序 按照判断来做的时候  onpage没有发生 死循环了
      

  14.   

    Private Sub Command5_Click()
    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大致是这个意思
      

  15.   

    While Text4.Text = "no"
    Sleep 1 '改成1
    DoEvents '加上DoEvents,否则navigatecomplete2事件和onload事件在消息队列中堆积,造成form不能正常接收事件
    Wend