xmlhttp 和 inet 控件 都可以抓取web网页,哪个更快呢?

Go_Rush 2006-04-10 03:15:05
我的代码:

Sub test() '方法一: 用Inet来抓
Inet1.AccessType = icUseDefault
Text1.Text = Inet1.OpenURL("http://www.csdn.net/map/map.shtm")
End Sub

Sub test2() '方法二: 用xmlhttp来抓
Dim objXMLHTTP As New MSXML2.XMLHTTP
objXMLHTTP.open "GET","http://www.csdn.net/map/map.shtm", False
objXMLHTTP.send
Text1.Text = StrConv(objXMLHTTP.responseBody, vbUnicode)
End Sub


我测试过,好象xmlhttp要快一点啊。
但是如果目标地址 http://www.csdn.net/map/map.shtm不可用,或者断网,无法取得文件的时候
xmlhttp 就很慢,程序出现假死现象

另: 我第一次接触 inet 和 xmlhttp ,大家推荐我用哪种方式抓取web?

以上代码没有问题,哪位高手能帮我完善一下代码,加上错误处理,当网络资源不可用的时候
怎么处理错误来避免出错或者 程序假死 的现象
...全文
414 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2006-04-10
  • 打赏
  • 举报
回复
其实差别不大,主要还是取决于网速!
还有就是如果远程web 服务器上用respond.write 返回纯xml字符串,用Inet好象是不能取的,用objXMLHTTP就可以,你可以试试
-------------------------------------

但是如果目标地址 http://www.csdn.net/map/map.shtm不可用,或者断网,无法取得文件的时候
xmlhttp 就很慢,程序出现假死现象
===============================
这样的话,可以修改第三个参数为True
objXMLHTTP.open "GET","http://www.csdn.net/map/map.shtm", True
Do While http.readyState <> 4 ' 查询状态,延时
DoEvents
Loop
这样就不会出现假死现象. 或者用timer定时来取readyState 属性.



孙小雄 2006-04-10
  • 打赏
  • 举报
回复
差不了太多的

Private Sub Command1_Click()
Set Inet1 = CreateObject("InetCtls.Inet")
On Error Resume Next
Inet1.Execute "http://www.google.com"
ff:
DoEvents
If Inet1.StillExecuting Then GoTo ff
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
strData = strData & vtData
DoEvents
'取得下一块。
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop
MsgBox strData
'你可以在这里处理字符串strData
End Sub

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧