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