返回列表 上一主題 發帖

[發問] 鉅亨網 技術指標 VBA抓取問題

[發問] 鉅亨網 技術指標 VBA抓取問題

本帖最後由 GBKEE 於 2016-2-18 13:17 編輯

請問各位先進

小弟在鉅亨網 技術指標 股價創新高 抓取資料
現在遇到一個問題:雖然可以抓下網頁資料,但是有時間差的問題
讀取網頁資料http://www.cnyes.com/twstock/a_technical2.aspx
網頁會開啟當天的資料,比方今天 (1/26),如果要往前抓幾天的資料,有一個選項可以改變日期,我也用VBA改變語法
但是因為網頁執行還需要時間,這會導致比方我輸入 (1/25)的選項,雖然網頁讀取完畢,也顯示1/25的data,但是VBA卻還是抓到一開始 (1/26)的網頁資料
語法如下,還請高手指點
感謝

For mysearchrange = 2 To 3  '設定要尋找的日期
mysearchdate = Sheets("總表").Cells(mysearchrange, 5).Value

With CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate "http://www.cnyes.com/twstock/a_technical2.aspx"
Do While .Busy Or .readyState <> 4: DoEvents: Loop

With .document

'--------------------輸入要查詢的股票市場
   For Each A In .getelementsbytagname("SELECT")
     If A.Name = "ctl00$ContentPlaceHolder1$D1" Then
       For Each myopt In A.Options
           If myopt.innertext = "集中市場" Then
               myopt.Selected = True
               Exit For
           End If
          Next
          Exit For
       End If
    Next

'-------------------輸入要查詢的日期範圍
  
   For Each B In .getelementsbytagname("SELECT")
     If B.Name = "ctl00$ContentPlaceHolder1$D3" Then
       For Each myopt In B.Options
           If myopt.innertext = mysearchdate Then
               myopt.Selected = True
               B.fireEvent ("onchange")
               Exit For
           End If
          Next
          Exit For
       End If
    Next

End With

Do While .Busy Or .readyState <> 4: DoEvents: Loop
Application.Wait Now + #12:00:10 AM#   '在程式中'等候10秒

'-------------------將查詢結果複製到 Excel上

Hi GBKEE大大

請問您是不是把Application.Wait Now + #12:00:10 AM#   '在程式中'等候10秒 這一句語法修改成
==============================
Do Until InStr(.Document.getElementByid("ctl00_ContentPlaceHolder1_UpdatePanel1").innertext, mysearchdate)
'等候下載:指訂日期資料
DoEvents
Loop
============================================================


而以下這一段語法,是屬於抓網頁的table資料,對嗎? (不知我的理解是否正確,還請指教)
============================================================
42.            Set xTable = .Document.getElementsByTagName("TABLE")(1)

43.            ActiveSheet.UsedRange.Clear

44.            For Each A In xTable.Rows   'Table的Rows物件集合

45.                xR = xR + 1                 '下一列號

46.                xC = 1

47.                For Each C In A.Cells       'Table的Row物件的Cells物件集合

48.                    Cells(xR, xC) = C.innertext

49.                    xC = xC + 1

50.                Next

51.            Next

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題