Fw: [算表] 为何抓网络多笔资料会常常失败

楼主: Ibrahimovic (伊布)   2018-09-23 15:03:20
※ [本文转录自 Office 看板 #1Rfpgif3 ]
作者: Ibrahimovic (伊布) 看板: Office
标题: [算表] 为何抓网络多笔资料会常常失败
时间: Sun Sep 23 15:03:06 2018
软件: Excel
版本: 2016
时常用VBA在抓网络资料,一直都有个疑惑
如果只抓少数几笔资料,例如3笔,通常VBA写完,F5按下去,都会成功
可是如果是要抓很多笔,例如100笔,通常就会在下载阶段时挂掉,出现没有反应
而在这下载失败里的几次例子里
重新在VBA里按F8逐条执行,就会成功!?
针对这种问题,做过的补救方式有
1.加循环直到网页完全加载
Do While IE.readyState <> 4 Or IE.Busy
DoEvents
Loop
2.接上面循环,再加等待时间
Application.wait now + timevalue("00:00:05")
以上加了,改善成功率不到5成,时好时坏
内存或CPU状态也有检查
试过的网站来源不只1个
但是,感觉都没有办法抓到问题重点
所以想请教诸位大德开释
为什么按F5,一次完整跑,会失败
按F8,逐条执行,却会成功 ?
作者: napyang (爱唱歌的大男孩)   2018-09-24 10:07:00
建议你去girhub上找一位神人做的VBA-Web来parse,不要透过IE应该就没这问题。https://github.com/VBA-tools/VBA-Web
作者: peakhour   2018-09-24 16:40:00
可在F8逐条执行成功,表示你程式连线过快,必须放慢,delay长一点
作者: waiter337 (给开司一罐苏格登)   2018-10-30 09:32:00
我印象有个写法好像要等下载完成才能执行下一个步骤该不会是这个巴Do While MyBrowser.busy Or _MyBrowser.readyState <> 4DoEventsLoopdoLoop Until MyBrowser.readyState = READYSTATE_COMPLETE

Links booklink

Contact Us: admin [ a t ] ucptt.com