2025年4月18日 星期五

Google教學:使用IMPORTXML自動抓取上櫃股票價格 (解決GOOGLEFINANCE限制)

前言

許多投資者喜歡使用 Google Sheets 來追蹤自己的投資組合,其中 GOOGLEFINANCE 函數非常方便,可以輕鬆抓取上市公司的股價等資訊。然而,當我們需要追蹤上櫃股票或其他特定金融商品時,GOOGLEFINANCE 可能就無法使用了。這時候,Google Sheets 提供的另一個強大函數 IMPORTXML 就派上用場了!它可以讓我們從網頁中匯入特定結構化的資料,例如股價、股票名稱等。

什麼是 IMPORTXML?

IMPORTXML 函數可以從網際網路上各種結構化資料類型 (包括 XML、HTML、CSV、TSV、RSS 和 ATOM XML 等) 匯入資料。

語法:

IMPORTXML(網址, XPath查詢, [語言代碼])
Excel
  • 網址:要檢查的網頁網址,包含通訊協定 (例如 http:// 或 https://)。

  • XPath查詢:用來指定要從網頁抓取哪個元素的 XPath 語法。

  • 語言代碼 (選用):用於解析資料的語言和地區代碼。如果省略,會使用文件的語言環境。

使用 IMPORTXML 抓取上櫃股價範例

假設我們要抓取「國泰10Y+金融債 (代號: 00933B)」這檔 ETF 的即時股價。

步驟一:找到資料來源網頁

首先,我們需要在網路上找到提供這個資訊的網頁。這裡我們使用 Yahoo奇摩股市 作為範例:

  • 國泰10Y+金融債 (00933B) 的 Yahoo 股市頁面網址:
    https://tw.stock.yahoo.com/quote/00933B.TWO/

步驟二:取得目標資料的 XPath

XPath 是一種用來在 XML/HTML 文件中查找資訊的語言。我們需要找到「股價」和「股票名稱」這兩個資訊在網頁 HTML 結構中的路徑 (XPath)。

  1. 使用 Chrome 瀏覽器 開啟上述的 Yahoo 股市網頁。

  2. 找到你想抓取的資料,例如目前的股價 (影片中是 16.94)。

  3. 在股價數字上按一下滑鼠右鍵,選擇「檢查 (Inspect)」。

  4. 瀏覽器右側或下方會開啟「開發人員工具」,並且會自動反白顯示對應股價的 HTML 程式碼 (通常是一個 <span> 或 <div> 標籤)。

  5. 反白顯示的程式碼上按一下滑鼠右鍵

  6. 依序選擇「複製 (Copy)」->「複製 XPath (Copy XPath)」。

重複以上步驟,也可以取得「股票名稱」的 XPath。

根據影片操作,我們可能得到類似以下的 XPath:

  • 股價 XPath (範例): //*[@id="main-0-QuoteHeader-Proxy"]/div/div[2]/div[1]/div/span[1]

  • 股票名稱 XPath (範例): //*[@id="main-0-QuoteHeader-Proxy"]/div/h1 (請自行驗證或複製您實際得到的路徑)

步驟三:在 Google Sheets 中輸入公式

  1. 開啟你的 Google Sheets 文件。

  2. 可以在 A 欄輸入股票代號,B 欄放股票名稱,C 欄放股價。

  3. 在 C2儲存格 (假設要放股價) 輸入以下公式:

    =IMPORTXML("https://tw.stock.yahoo.com/quote/00933B.TWO/", "//*[@id='main-0-QuoteHeader-Proxy']/div/div[2]/div[1]/div/span[1]")
    Excel
  4. 在 B2 儲存格 (假設要放股票名稱) 輸入以下公式:

    =IMPORTXML("https://tw.stock.yahoo.com/quote/00933B.TWO/", "//*[@id='main-0-QuoteHeader-Proxy']/div/h1")
    Excel

重要:關於 XPath 中的引號

  • 從 Chrome 複製出來的 XPath 可能會包含雙引號 ("),例如 //*[@id="..."]

  • 但是 IMPORTXML 函數的第二個參數 (XPath查詢) 本身需要用雙引號包起來。

  • 如果在公式的雙引號內又直接使用雙引號,會造成語法錯誤。

  • 解決方法 (如影片所示): 將 XPath 內部原本的雙引號 (

    • 例如,將 [@id="main-0-..."] 改成 [@id='main-0-...']

  • 另一種方法: 將 XPath 內部原本的雙引號 (") 改成兩個連續的雙引號 ( 來進行跳脫。

步驟四:查看結果

輸入公式後,Google Sheets 會顯示 "Loading...",稍待片刻後,就會抓取到對應的股票名稱和即時股價了!

注意事項

  1. 使用限制: Google Sheets 對 IMPORTXML 這類會存取外部資料的函數有使用次數限制,一個試算表內建議不要放太多 (例如超過 50 個),否則可能會抓取失敗或顯示錯誤。

  2. 網站結構變更: 如果目標網站 (如 Yahoo 股市) 的網頁結構改變了,原本的 XPath 就會失效,需要重新去複製新的 XPath。

  3. 網站保護: 有些網站可能會採取措施阻止爬蟲或自動抓取,這時 IMPORTXML 可能會無法成功抓取資料。

結論

IMPORTXML 是一個非常實用的函數,彌補了 GOOGLEFINANCE 在抓取上櫃股票或其他特定網頁資料時的不足。只要學會如何找到目標資料的 XPath,並注意引號的處理,就能輕鬆地將網頁上的特定資訊自動匯入 Google Sheets 中,讓你的投資追蹤表更加完善!



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

Excel VBA 教學:透過 Outlook 大量批次寄送客製化郵件 (免輸密碼、支援簽名檔與附件)

今天我們要分享一個實用的 Excel 工具教學:如何利用 Excel 透過已安裝的 Outlook 軟體來批次寄送電子郵件。 先前我們可能介紹過直接用 Excel 寄信的方法,但那些方法通常需要在 VBA 程式碼中輸入郵件帳號密碼,這對於某些使用者來說可能會有安全上的疑慮。因此,...