2018年12月9日 星期日

用 Google 試算表抓取上櫃 興櫃股價資料 教學

如果還沒看前面文章的記得先去補充基本概念

用 Google 試算表製做簡易股票報價表及理財表

用 Google 試算表製做歷史股價走勢圖(K線)

用 Google 試算表進行技術分析(雙週線)(月線)

如果還沒追蹤blog的也趕快去按追蹤


=======================================

好啦以下是正文,近期有許多網友提到有關抓取興櫃或上櫃股價的問題,我才發現這塊還滿多人在操作的,因為本人沒有在投資興櫃或上櫃的股票,所以過去一直沒有注意到,感謝各方大大的建議

在此教學以網友提到的金洲(4417)股票為例
以下資料為抓取"台灣證交所"的資料,還有抓取櫃買中心的資料



這部分會有兩個函式
一個是上市跟上櫃

function TWPRICE(code)
  var url = "http://mis.tse.com.tw/stock/api/getStock.jsp?ch=" + code + ".tw&json=1&_=";
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText("UTF-8");
  var data = JSON.parse(json);
  return data.msgArray[0].y;
}

另一個是抓取興櫃

function EmergingPRICE(code) { 
  var formData = {
    'SymbolID': String(code)
  };
  var options = {
    'method' : 'post',
    'payload' : formData
  };
  var url = "http://mis.tpex.org.tw/OTC/Quote.asmx/GETQ20";
  var response = UrlFetchApp.fetch(url,options);
  var xml = response.getContentText("UTF-8");
  var document = XmlService.parse(xml);
  var root = document.getRootElement();
  var items = root.getChildren();
  return items[10].getText();
}

然後把以上的程式碼都放進 "工具" > "指令碼編輯器" 

然後進入表格
輸入表格的名稱



然後輸入要查詢的股票
程式碼如下

上市上櫃用這個:
=TWPRICE(股票名稱)
興櫃用這個:
=EmergingPRICE(股票名稱)


最後按下enter

試算表連結如下


不過這股價很像不是即時的,而是前一天的收盤價,這部分要如何抓取資料,還需要再研究看看,用excel去抓取yahoo的報價很像可以克服這個問題,就留待下一篇excel的教學做講解,感謝大家的回覆。


最後鼓勵大家按下blog右方的訂閱方的追蹤,可以接收第一手的訊息,因為最近在做深度學習與人工智慧的研究,平時頗為繁忙,如果有疑問歡迎在文章底下留言,我有空會來做解答。

我將思想傳授他人,他人之所得,亦無損於我之所有;猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。湯瑪斯‧傑弗遜(Thomas Jefferson)





36 則留言:

  1. 請問如何捉台股上櫃個股的歷史年度高低價 ?
    http://www.tpex.org.tw/web/stock/statistics/monthly/st42.php?l=zh-tw

    回覆刪除
  2. 資工心理人大正妹 非常感謝解惑

    回覆刪除
  3. 您好 上市股價 =TWPRICE() 可抓到股價 但上櫃 =EmergingPRICE() 還是抓不到股價

    回覆刪除
  4. 你好,請問可以抓中文股名嗎?例如 =TWNAME(2330) ,就會出現"台積電"

    回覆刪除
  5. 老師,請問,我照著妳的程式碼貼入TWPRICE(股票名稱)
    會出現「不明函式:TWPRICE」請問是哪裡出問題了呢?可惜無法貼圖給老師看,只能用文字敘述…

    回覆刪除
    回覆
    1. 因為你沒有先把程式碼放進 "工具" > "指令碼編輯器"

      刪除
  6. 請問有辦法抓取上櫃股票的本益比和股價淨值比的方法嗎? 先感恩了

    回覆刪除
  7. 作者已經移除這則留言。

    回覆刪除
  8. 你好,請教一個問題。我想把抓到的股價與我設定的股價做比較,好像無法比較。
    如=IF(K2>L2,"建議買進","停止買進")。K2是我設定的股價(38),L2是抓進來的現價(35),顯示結果為"停止買進"。如果我將L2改為手動輸入35,則會顯示"建議買進"。不曉得有什麼方法或小技巧可以調整設定?謝謝

    回覆刪除
  9. 你好 請問00679B是不是沒辦法抓取 謝謝 試了其他的代號有

    回覆刪除
  10. 您好,測試了一下,上櫃只能抓到前一天的收盤價,是我有甚麼問題嗎?謝謝

    回覆刪除
  11. 您好~上櫃的code跑起來有error,有解決的方法嗎?
    The entity "nbsp" was referenced, but not declared. (第 20 行,檔案名稱:程式碼)
    20行是 var document = XmlService.parse(Xml);

    回覆刪除
    回覆
    1. Exception: Error on line 31: The entity "nbsp" was referenced, but not declared. (第 20 行,檔案名稱:程式碼)
      我也是~懇請協助
      Victorlove0913@gmail.com

      刪除
  12. 這個連結需要取得權限 ~~
    是不是共用關掉了呢 ? ..

    試算表連結如下
    https://docs.google.com/spreadsheets/d/1GxuqlleJbkDJzc5eofXx5nmxxDU5AqJghVq4dd9bUl4/edit?usp=sharing

    回覆刪除
  13. 可以試試這個:
    =IMPORTXML("https://www.bloomberg.com/quote/"&$A1&"","//span[@class='priceText__1853e8a5']")

    其中A1那格式股票代號,但必須是在Bloomberg網站上的股票代號,例如00679B在Bloomberg的代號是00679B.TT,A1納格就必須填00679B.TT,依此類推。
    目前測試過上市、上櫃都可用,而且是即日報價而非前一天報價。

    回覆刪除
    回覆
    1. 感謝您的分享,我撥空來試試看

      刪除
    2. 感謝分享,經過測試後發現可以用,不過有個地方要修正,以您的例子,應該是要用00679B:TT,而非00679B.TT,

      刪除
    3. 是的,抱歉一時手殘lol,感謝提醒!

      刪除
    4. 昨天都還可以使用 (9/17)但今天就不行了,是Bloomberg有改版嗎?

      刪除
    5. 好像這幾天不行使用,不知版主有沒有解決之道,感謝!

      刪除
  14. 作者已經移除這則留言。

    回覆刪除
  15. 請問老師,如何爬下列連結資料。感謝。
    https://mis.twse.com.tw/stock/group.jsp?ind=D2&ex=tse&currPage=0&type=warrant

    回覆刪除
  16. line 2  改成這樣
    var url = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=" + code + ".tw&json=1&delay=0";

    code 的話 上櫃的要 加 otc_ 例如 otc_5443 ; 上市的則加 tse_  例如 tse_2330

    回覆刪除
    回覆
    1. function TWPRICE(code) {
      var url = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=" + code + ".tw&json=1&delay=0";
      var response = UrlFetchApp.fetch(url);
      var json = response.getContentText("UTF-8");
      var data = JSON.parse(json);
      return data.msgArray[0].y;
      }

      刪除
  17. 作者已經移除這則留言。

    回覆刪除
  18. 版主你好,請問有新的上櫃股價抓取的程式可供分享嗎?感謝~ 

    回覆刪除
  19. 您好!我設定了程式碼後,發現6690安碁的股價仍無法抓取,請問有方法解決嗎?謝謝!

    回覆刪除
  20. 我不是版主,只是路過的。建議可參考這篇,我試過是可以的 http://wushinetlife.blogspot.com/2019/08/python_6.html?m=1

    回覆刪除

經濟日報數位訂閱懶人包

  去年寫過一篇介紹文,經濟日報推出了數位訂閱產品,如果你是價值投資者,或是對產業研究及經濟數據有興趣的朋友,包含深耕國內外財經深度內容、圖像式產業資料庫、早安經濟日報聽新聞等等。   目前有「彭博新聞獨家聯名、七大外媒授權合作、專家解析深度專欄」三大內容,豐富你的關鍵投...