Foxtable(狐表)用户栏目专家坐堂 → [求助]关于网页加载后执行代码


  共有2508人关注过本帖树形打印复制链接

主题:[求助]关于网页加载后执行代码

帅哥哟,离线,有人找我吗?
zto001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
[求助]关于网页加载后执行代码  发帖心情 Post By:2021/2/10 4:45:00 [只看该作者]

[求助]关于网页加载后执行代码
我有一段代码,是获取网页上的信息,网页加载速度影响获取网页信息。怎么改代码改成加载网页后再获取信息?
If Forms("售后记录").Opened Then
    Dim brw As WinForm.WebBrowser =  forms("售后记录").Controls("WebBrowser1")
    brw.Address = "http://www.kuaidi100.com/chaxun?com="& 快递 &"&nu=" & 单号
    


    
'获取网页信息代码
    Dim web As System.Windows.Forms.WebBrowser = forms("售后记录").controls("webbrowser1").Basecontrol
    Dim elems As object = web.Document.GetElementsByTagName("td")
end if

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/16 10:41:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=49278

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=32808

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/2/17 12:02:00 [只看该作者]

Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
If Isgo Then '判断一下ISGO是否需要执行操作 如果是TRUE说明可以继续执行操作, 如果是FALSE说明已经执行完毕,或者点击了停止.
    Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
    If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete'由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作

应该是这几段代码判断出来的吧。我要怎么改才能改到按钮里面?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/18 9:25:00 [只看该作者]

那就看2楼第一个链接的用法

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/2/18 16:22:00 [只看该作者]

那个方法用不了,每次物流记录没加载出来就执行了后面的代码。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/18 16:45:00 [只看该作者]

如果3楼的用法可以判断,2楼第一个链接的用法肯定也可以。写了什么代码?

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2021/2/19 22:37:00 [只看该作者]

            Dim web As New System.Windows.Forms.WebBrowser()
            web.ScriptErrorsSuppressed = True '禁止弹出脚本错误对话框
            web.Navigate("http://www.kuaidi100.com/chaxun?com="& 快递 &"&nu=" & 单号)
            Do Until web.ReadyState = 4
                Application.DoEvents
            Loop
            Dim sdt As Date = Date.Now
            While Date.Now < sdt.AddSeconds(2)
                Application.DoEvents
            End While
            
            Dim elems As object = web.Document.GetElementsByTagName("td")
            Dim A1,A2,A3 As String
            For Each elem As object In elems
........

延迟2秒执行这个是目前效果稍微好一点的。最多只能执行5次,后面就都没加载完全就执行了后面的代码

执行网页如下
http://www.kuaidi100.com/chaxun?com=youzhengguonei&nu=9864325573222
我获取物流记录

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/20 9:32:00 [只看该作者]

这种没有办法,对方网站可能做了防护处理,使用了内置框架或者ajax延迟处理。

 回到顶部