作者Ibrahimovic (伊布)
看板Visual_Basic
標題Fw: [算表] 為何抓網路多筆資料會常常失敗
時間Sun Sep 23 15:03:20 2018
※ [本文轉錄自 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,逐條執行,卻會成功 ?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.175.126.106
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1537686188.A.A43.html
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: Ibrahimovic (1.175.126.106), 09/23/2018 15:03:20
1F:→ napyang: 建議你去girhub上找一位神人做的VBA-Web來parse, 09/24 10:07
2F:→ napyang: 不要透過IE應該就沒這問題。 09/24 10:07
4F:→ peakhour: 可在F8逐條執行成功,表示你程式連線過快,必須放慢,de 09/24 16:40
5F:→ peakhour: lay長一點 09/24 16:40
感謝2位指教,我再試試
感恩
※ 編輯: Ibrahimovic (1.175.126.106), 09/25/2018 00:58:05
6F:→ waiter337: 我印象有個寫法好像要等下載完成才能執行下一個步驟 10/30 09:32
7F:→ waiter337: 該不會是這個巴 10/30 09:33
8F:→ waiter337: Do While MyBrowser.busy Or _ 10/30 09:33
9F:→ waiter337: MyBrowser.readyState <> 4 10/30 09:33
10F:→ waiter337: DoEvents 10/30 09:34
11F:→ waiter337: Loop 10/30 09:34
12F:→ waiter337: do 10/30 09:34
13F:→ waiter337: Loop Until MyBrowser.readyState = READYSTATE_COMPL 10/30 09:34
14F:→ waiter337: ETE 10/30 09:35