- 帖子
- 90
- 主題
- 16
- 精華
- 0
- 積分
- 114
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- sp2
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-7-9
- 最後登錄
- 2018-10-7
|
22#
發表於 2012-8-4 16:28
| 只看該作者
回復 white5168 謝謝你的提醒 指教
回復 c_c_lai 回復 HSIEN6001
white5168 的指教 ...
GBKEE 發表於 2012-8-4 15:19  - Sub 取得交易明細總頁數()
- Dim myTime
- Dim Retry As Integer
-
- Set IE = CreateObject("InternetExplorer.Application")
-
- strLink = "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
-
- Retry = 0
-
- Do
- Do
- Do
- Do
- Do
- 網頁開啟完成與否
- On Error Resume Next
- Set doc = IE.document
- On Error GoTo 0
- Loop While doc Is Nothing
- Set element = doc.getElementsByName("txtTASKNO")
- Loop While element.Length = 0
- element.Item(0).Value = stockid
- Set element = doc.getElementsByName("btnOK")
- Loop While element.Length = 0
- element.Item(0).Click
-
- Application.Wait Now + TimeValue("00:00:02")
-
- Set element = doc.getElementsByName("sp_ListCount")
- 'Set element = doc.getElementsByTagName("span")
- Loop While element.Length = 0
- Pagecount = element.Item(0).innerText
- Retry = Retry + 1
-
- If Retry = 5 Then Exit Do
- Loop While Pagecount = ""
-
- Set doc = Nothing
- Set element = Nothing
- IE.Quit
- Set IE = Nothing
- End Sub
複製代碼 我在這一段code裡作的多重防範,因為未來各位抓資料的時候可能是在尖峰時段,就是大家一起抓資料,會導致遠端伺服器的服務資源大家搶,如果只單單一次性抓總頁數,一定會發生抓不道的時候,所以才要多做幾道手續
再者我也擔心,因為VBA 沒有try...cash的語法,所以除了多家擠到防護,再來就是記錄每一筆抓取的ID,當錯誤發生的時候才有機會可以再重斷點開始抓取,而不是重頭
在抓證交所資料時,時常會被證交所的防火牆強制斷出,需為這個部分多加幾道防護才行,因此這一點請各位務必多多注意 |
|