返回列表 上一主題 發帖

[發問] 請問如何以VBA擷取網站上的資料?

[發問] 請問如何以VBA擷取網站上的資料?

本帖最後由 mnsmrtl 於 2011-4-23 12:11 編輯

如題,我希望在EXCEL輸入股票代碼,然後可以從證交所或是奇摩等網站抓取當日收盤等數據
不過完全不知道從何下手,請各位先進不吝指教,謝謝
不進則退

回復  Scott090

原始網站: https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2 ...
ui123 發表於 2017-9-14 16:27


請參考:
    http://forum.twbts.com/thread-20288-1-1.html

TOP

本帖最後由 Scott090 於 2017-11-11 19:53 編輯

回復 23# ui123


   
原始網站: https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2 ...
ui123 發表於 2017-9-14 16:27



period1=1473638400, period2=1505174400 的數字是 日期的秒數數列值
以VBA計算可得
例如 日期是 "2017/1/20",則 period = datevalue("2017/1/20") * 86400 - 2209190400
其中 一日 有86400  秒, 22091904005這個數字是這個網頁對日期演算的一個常數

可以驗算:
a = (1473638400 + 2209190400) / 86400 = 42625.33333
yyyy = year(a) = 2016
mm  = month(a) = 9
dd = day(a) = 12

所以, 1473638400 這個數字 代表 日期 2016/9/12

以上請參考

TOP

回復 22# Scott090

原始網站: https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d
會自動會轉成,規則不清楚,目前用VBA抓只能抓到100筆

TOP

回復 21# ui123

請問這個數值文字如何轉換成日期格式?  謝謝
    period1=1473638400

TOP

回復 11# oobird


來問一下 oobird 大大,
oobird大大 問你喔,我用下面這個程式抓出的100筆資料,你知道怎樣讓他抓完整嗎?

原始網站: https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d

Sub QueryTable()
    Const xlURL As String = "https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d"
    With ActiveSheet.QueryTables.Add("URL;" & xlURL, Destination:=Range("$A$1"))
        .WebFormatting = xlWebFormattingNone
        .TablesOnlyFromHTML = False
        .RefreshStyle = xlOverwriteCells
        .SaveData = True
        .Refresh 0
    End With
End Sub

TOP

回復 5# GBKEE

GBKEE大大,我原本想用這幾天問你的,抓Crumb位置來下載csv檔案,但沒有成功,所以想換下面那個網址試試,但抓出的資料不完整,如果可以抓取完整就太好了
https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d
紅框下面是要抓的資料:

javascript:;

Data 1.PNG (52.44 KB)

Data 1.PNG

TOP

回復 5# GBKEE

大大請問一下,我用下面這個程式抓出的資料跟原始網站的資料比較下,下面有一段沒有抓不到,是不是有參數沒設好? 要wait嗎?因為下面有顯示Loading more data...但是我不知道怎樣讓他跑完

原始網站: https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d

Sub QueryTable()
    Const xlURL As String = "https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d"
    With ActiveSheet.QueryTables.Add("URL;" & xlURL, Destination:=Range("$A$1"))
        .WebFormatting = xlWebFormattingNone
        .TablesOnlyFromHTML = False
        .RefreshStyle = xlOverwriteCells
        .SaveData = True
        .Refresh 0
    End With
End Sub

TOP

請問 如果只想抓 網站上的部分資料 下來, VBA 要如何寫 ?
  1. Sub 期貨交易口數()
  2. Set shFirstQtr = ActiveSheet
  3. Set qtQtrResults = shFirstQtr.QueryTables _
  4.     .Add(Connection:="URL;http://www.taifex.com.tw/chinese/3/7_12_3_tbl.asp", _
  5.         Destination:=shFirstQtr.Cells(3, 1))
  6. With qtQtrResults
  7.     .WebFormatting = xlNone
  8.     .WebSelectionType = xlSpecifiedTables
  9.     .WebTables = "2"
  10.     .Refresh
  11. End With
  12. End Sub
複製代碼

抓期貨口數.jpg (124 KB)

期貨交易口數

抓期貨口數.jpg

TOP

已找到.Refreshstyle的位置
但找不到怎樣只導入第一欄的資料@@
VBA新手

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題