vb xmlhttp无法获取网页
Fori=Val(Text9.Text)ToVal(Text8.Text)Text11.Text=iSetxmlHTTP1=CreateObject("Microsoft...
For i = Val(Text9.Text) To Val(Text8.Text)
Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "http://s.taoao.com/search?spm=a230r.1.7.2.6dU7Fj&tab=all&loc=" & xx & "&fs=0&initiative_id=tbindexz_" & Replace(Left$(Now, InStr(Now, " ")), "/", "") & "&q=" & URLEncode(Text7.Text) & "&promote=0&bcoffset=2&s=" & i * 40 & "#J_relative"
xmlHTTP1.Open "Get", myurl, True
xmlHTTP1.Send
While xmlHTTP1.ReadyState <> 4
DoEvents
If MyHotKey(vbKeyF5) Then '如果按下F1地址1
MsgBox "2"
GoTo err
End If
Wend
err:
Text1.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
以上是我的代码~但是在运行一段时间后会出现一直在 While xmlHTTP1.ReadyState <> 4 到 wend 的循环无法进行下一步,跳过以后会出错。在清理系统垃圾以后又会出现上述问题 展开
Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "http://s.taoao.com/search?spm=a230r.1.7.2.6dU7Fj&tab=all&loc=" & xx & "&fs=0&initiative_id=tbindexz_" & Replace(Left$(Now, InStr(Now, " ")), "/", "") & "&q=" & URLEncode(Text7.Text) & "&promote=0&bcoffset=2&s=" & i * 40 & "#J_relative"
xmlHTTP1.Open "Get", myurl, True
xmlHTTP1.Send
While xmlHTTP1.ReadyState <> 4
DoEvents
If MyHotKey(vbKeyF5) Then '如果按下F1地址1
MsgBox "2"
GoTo err
End If
Wend
err:
Text1.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
以上是我的代码~但是在运行一段时间后会出现一直在 While xmlHTTP1.ReadyState <> 4 到 wend 的循环无法进行下一步,跳过以后会出错。在清理系统垃圾以后又会出现上述问题 展开
1个回答
展开全部
改为同步运行就没有这些麻烦了
For i = Val(Text9.Text) To Val(Text8.Text)
Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "..."
xmlHTTP1.Open "Get", myurl, False
xmlHTTP1.Send
Text1.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
For i = Val(Text9.Text) To Val(Text8.Text)
Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "..."
xmlHTTP1.Open "Get", myurl, False
xmlHTTP1.Send
Text1.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
更多追问追答
追问
没用啊~~虽然不会一直在那里循环,不过直接跳过去了,那样什么都没下下来了
追答
xmlHTTP1.Open "Get", myurl, False
最后那个参数是False哦,而你的代码是True,这个改了没?
False表示同步运行,就是说xmlHTTP1.Open命令执行后VB会暂停程序运行直到网站返回信息才继续执行后面的语句;
True表示异步运行,就是说xmlHTTP1.Open命令执行后VB会立即继续运行后面的语句而不等待服务器返回信息。
所以同步运行的话,并不会出现像你说的直接跳过去的,它会一直等待服务器返回信息(效果看起来就跟你用while循环等待网页返回信息一样,但它不会出现你说的死循环的情况)。当然,如果网站发生错误它也一样会返回信息的,所以你不用担心它会卡在那里死掉。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询