Foxtable(狐表)用户栏目专家坐堂 → [求助]关于webbrowser控件加载完成问题


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

主题:[求助]关于webbrowser控件加载完成问题

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/26 14:17:00 [只看该作者]

说的就是在事件里弹出啊. 你要处理什么,写到事件里去即可

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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/2/26 14:18:00 [只看该作者]

或者换个思路,已知网址 http://www.foxtable.com,获取网页正文代码,不一定要用webBrowser控件,如何实现?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/26 14:20:00 [只看该作者]

利用WEBREQUEST



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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/2/26 14:22:00 [只看该作者]

Dim strAddr As String = "http://www.foxtable.com/"
Dim stream As System.IO.Stream = System.Net.WebRequest.Create(strAddr).GetRequestStream
'Dim sr As System.IO.StreamReader = New System.IO.StreamReader(stream, System.Text.Encoding.UTF8)
'Output.Show(sr.ReadToEnd)

提示这个错误,如何解决
System.Net.ProtocolViolationException: 无法发送具有此谓词类型的内容正文。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/26 14:23:00 [只看该作者]

Dim url As String = "http://www.foxtable.com"
Dim rqst As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url)
Dim rsps As System.Net.HttpWebResponse = rqst.GetResponse
Dim stm As System.IO.Stream = rsps.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm)
Dim str As String = reader.ReadToEnd
stm.Dispose()
messagebox.show(str)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 14:34:00 [只看该作者]

测试了一下,你1楼的代码没有问题,值是False,是因为你循环完以后,网页还没有加载完毕。

 

为什么要搞这么复杂啊,直接循环判断就好啊

 

Dim web As New System.Windows.Forms.WebBrowser()
web.ScriptErrorsSuppressed = True
web.Navigate("http://www.foxtable.com")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop


'取数据
Dim ls As Object = web.Document.getElementsByTagName("a")
For Each l As object In ls
    output.show(l.GetAttribute("href"))
Next


 


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/2/26 14:47:00 [只看该作者]

以下是引用有点甜在2015/2/26 14:34:00的发言:

测试了一下,你1楼的代码没有问题,值是False,是因为你循环完以后,网页还没有加载完毕。

 

为什么要搞这么复杂啊,直接循环判断就好啊

 

Dim web As New System.Windows.Forms.WebBrowser()
web.ScriptErrorsSuppressed = True
web.Navigate("http://www.foxtable.com")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop


'取数据
Dim ls As Object = web.Document.getElementsByTagName("a")
For Each l As object In ls
    output.show(l.GetAttribute("href"))
Next


怕造成死循环了,Application.DoEvents 没这句,web.ReadyState = 4 一直不能变成4,10秒后自动退出了。

现在改成Bin的方案了,我只要获取网页信息,不需要真的打开网页。

谢谢两位了


 回到顶部
总数 17 上一页 1 2