Board logo

標題: [發問] 有關於撈股票Code問題 [打印本頁]

作者: afu9240    時間: 2018-5-7 13:34     標題: 有關於撈股票Code問題

各位高手與大大 好
  
                   可否協助解決附件檔案,本來擷取奇摩網站的股票數據,不知為什麻這禮拜Code好像出了什麻問題,資料撈不進來,我認為 我這個code算即時的
            還是有大大可提供其他的方式,另求其解!!!感謝幫忙 感恩不盡

[attach]28666[/attach]
作者: iamaraymond    時間: 2018-5-7 19:33

回復 1# afu9240
所以您要的資料是:
時間、成交、賣進、賣出、漲跌、張數、昨收、開盤、最高、最低嗎?
作者: afu9240    時間: 2018-5-8 09:19

回復 2# iamaraymond


    是的 大大,可以提供嗎???感恩
作者: iamaraymond    時間: 2018-5-8 16:46

回復 3# afu9240
  1. Sub test()

  2. Dim myXML As Object
  3. Set myXML = CreateObject("Microsoft.XMLHTTP")

  4. Dim myHTML As Object
  5. Set myHTML = CreateObject("HTMLFile")

  6. i = 2
  7. With myXML
  8.     For Each stockNo In Range("A2:A4").Value
  9.         .Open "GET", "https://tw.stock.yahoo.com/q/q?s=" & stockNo, False
  10.         .send
  11.    
  12.         myHTML.body.innerHTML = .responseText
  13.         
  14.         Set myTable = myHTML.getElementsByTagName("table")(6)
  15.         
  16.         For j = 1 To 10
  17.             Cells(i, j + 1) = myTable.Rows(1).Cells(j).innerText
  18.         Next
  19.         
  20.         i = i + 1
  21.     Next
  22. End With

  23. Set myXML = Nothing
  24. Set myHTML = Nothing

  25. End Sub
複製代碼

作者: afu9240    時間: 2018-5-8 17:25

回復 4# iamaraymond


    好像沒辦法即時
作者: iamaraymond    時間: 2018-5-8 18:53

回復 5# afu9240

不太懂即時的意思,可以請afu大講詳細一點嗎?
作者: afu9240    時間: 2018-5-9 08:46

回復 6# iamaraymond


   感謝i大回復

       我所謂不即時是比如網頁已經更新到11:25,撈進來的資料還是在'09:30,會有這種狀況!!@@

[attach]28678[/attach][attach]28679[/attach]
作者: quickfixer    時間: 2018-5-9 08:56

本帖最後由 quickfixer 於 2018-5-9 09:03 編輯

.setRequestHeader "Cache-Control", "no-cache"
.setRequestHeader "Pragma", "no-cache"
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send

抓即時資料,要改成這樣,01那邊有比較詳細的說明
作者: afu9240    時間: 2018-5-9 10:45

回復 8# quickfixer


    不好意思01哪邊是指??????哪兒
作者: iamaraymond    時間: 2018-5-9 11:42

回復 9# afu9240

即時的部分,我剛剛試是OK的
[attach]28680[/attach]
您圖片的錯誤應該是因為我是取A2到A4的股票代號,但您好像只有A2有值,才導致這個錯誤,所以應該簡單改一下迴圈即可解決

01我想應該是指mobile01吧?
作者: iamaraymond    時間: 2018-5-9 11:51

回復 9# afu9240

啊我知道您的意思了
因為在用這方法抓資料時,他會有一個像是"記憶"的功能(確切的專有名詞我不太清楚)
也就是說若發送的是同一個request,那他就會拿到跟上次一樣的資料(這也是為什麼當你在執行第二次、第三次程式時,他會執行的超快)
所以解決方式就是"讓他發送不一樣的request"
例如在參數多加一個timer,每次發送的時候他就會以為是不一樣的request了,但實際上這個timer並不會影響到你抓到的資料
感謝您又讓我上了寶貴的一課
  1. Sub test()

  2. Dim myXML As Object
  3. Set myXML = CreateObject("Microsoft.XMLHTTP")

  4. Dim myHTML As Object
  5. Set myHTML = CreateObject("HTMLFile")


  6. i = 2
  7. With myXML
  8.     For Each stockNo In Range("A2:A4").Value
  9.         .Open "GET", "https://tw.stock.yahoo.com/q/q?t=" & Timer & "&s=" & stockNo, False
  10.         .send
  11.    
  12.         myHTML.body.innerHTML = .responseText
  13.         
  14.         Set myTable = myHTML.getElementsByTagName("table")(6)
  15.         
  16.         For j = 1 To 10
  17.             Cells(i, j + 1) = myTable.Rows(1).Cells(j).innerText
  18.         Next
  19.         
  20.         i = i + 1
  21.     Next
  22. End With

  23. Set myXML = Nothing
  24. Set myHTML = Nothing

  25. End Sub
複製代碼

作者: zheng211016    時間: 2018-5-9 20:51

http://forum.twbts.com/thread-20755-1-1.html
自創的 送你使用不用客氣
作者: iamaraymond    時間: 2018-5-10 16:09

回復 9# afu9240

所以...請問最後有解決您的問題嗎?
作者: afu9240    時間: 2018-5-10 19:43

回復 13# iamaraymond


    非常感謝i大的協助。。可以work了。。真的太感謝了
作者: zheng211016    時間: 2018-6-3 14:47

http://forum.twbts.com/thread-20755-1-1.html
作者: afu9240    時間: 2018-11-28 14:36

回復 11# iamaraymond


    i 大你好,想請教一下附件是您之前提供給我的code[attach]29749[/attach],之前這個code都能正常運作,請問現在無法work..變數及with都有設定,為何還是有問題呢~~求協助
作者: f3202    時間: 2018-11-29 10:15

Set myTable = myHTML.getElementsByTagName("table")(6)
改成
Set myTable = myHTML.getElementsByTagName("table")(5)
作者: afu9240    時間: 2018-11-29 11:08

回復 17# f3202

f大  好厲害 真的非常感謝您的回覆~~tks*100000

f大 請問(6)跟(5)是差在哪裡啊??可以解惑一下嗎??? 感謝高手
作者: Scott090    時間: 2018-11-30 07:44

回復 18# afu9240


    "https://tw.stock.yahoo.com/q/q?t=" & Timer & "&s=" & stockNo"
    這個網頁改版了,資料表從第6改到第5
作者: afu9240    時間: 2018-11-30 08:44

回復 19# Scott090


    原來如此~謝謝
作者: afu9240    時間: 2019-1-11 09:26

回復 17# f3202


    F大  您好

      冒昧請教我改了Set myTable = myHTML.getElementsByTagName("table")(6)改成(5)可以使用不過最近有出現 "沒有設定物件變數或with變數",是網站更改了嗎??
現在無法執行 可以協助一下嗎????感恩[attach]29932[/attach]
作者: afu9240    時間: 2019-1-11 09:27

回復 19# Scott090


    S大  您好

      冒昧請教我改了Set myTable = myHTML.getElementsByTagName("table")(6)改成(5)可以使用不過最近有出現 "沒有設定物件變數或with變數",是網站更改了嗎??
現在無法執行 可以協助一下嗎????感恩[attach]29933[/attach]
作者: f3202    時間: 2019-1-11 10:01

回復 21# afu9240


    Set myTable = myHTML.getElementsByTagName("table")(2)
試試
作者: Scott090    時間: 2019-1-11 10:23

回復 22# afu9240

   這個網頁資料表;
    https://tw.stock.yahoo.com/q/q?t=34893&s=2330

    又改了:
     資料日期 = ("table")(0).innertext
     交易資料表 = ("table")(2)

    請參考
作者: afu9240    時間: 2019-1-11 13:04

回復 24# Scott090


    感謝*10000,,怎都常常改來改去~~~><"
作者: afu9240    時間: 2019-1-11 13:05

回復 23# f3202


    感謝f大~~~~~奇怪為何要改來改去><"




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)