今天我們要來解決一個網友遇到的問題:如何將台灣期貨交易所(TAIFEX)網站上的「三大法人各期貨契約」資料,依照指定日期下載到 Excel 中?
許多財經網站為了防止被輕易抓取資料,會使用表單(Form)的 POST 方法來傳遞查詢條件(例如日期),這會導致您在查詢不同日期時,瀏覽器的網址列維持不變。這對於想使用 Excel 的「從Web取得資料」功能來說是一大障礙,因為我們需要一個可以動態變更參數的網址。
這次的教學,我將分享我是如何找出這類網站的真實下載連結,並提供一個已經製作好的 Excel 範本,讓您能一鍵下載每日資料!
本次教學目標網頁: 交易資訊 > 三大法人 > 區分各期貨契約 > 依日期
找出隱藏下載連結的技巧 這個技巧的核心是利用瀏覽器的「開發人員工具」,將網站的資料傳送方式從 POST 暫時改成 GET ,藉此讓查詢參數顯示在網址列上。
步驟一:開啟開發人員工具 在目標網頁上,按一下滑鼠右鍵,選擇「 檢查 」(Inspect),或直接按鍵盤上的 F12 鍵。這會開啟開發人員工具視窗。
步驟二:找到網頁表單的原始碼 在開發人員工具中,點擊左上角的「 選取元素 」圖示(一個方框內有滑鼠指標的圖案),然後回到網頁上點擊「 送出查詢 」按鈕。
此時,工具視窗中的程式碼會自動跳到該按鈕的位置。我們往上找,會看到一個 <form ...> 的標籤。這就是控制資料提交的關鍵。
步驟三:將 POST 修改為 GET (關鍵步驟) 仔細看 <form> 標籤,您會發現其中有一段 method="post" 。我們直接在這段程式碼上連點兩下,將 post 修改成 get ,然後按 Enter。
步驟四:重新查詢並取得參數網址 修改完成後,回到網頁上,選擇一個您想查詢的日期(例如 2021/05/21),然後點擊「 送出查詢 」。
神奇的事情發生了!頁面重新整理後,瀏覽器的網址列變成了一長串帶有參數的網址。這就是我們成功用 GET 方法取得的動態網址!
...futContractsDate?queryType=1&goDay=&queryDate=2021%2F05%2F21&commodityId=
步驟五:組合最終的 Excel 專用下載連結 在原始頁面的下方,期交所有個貼心提示:「 若以Excel匯入外部資料,請使用此連結 」。
點擊這個連結,我們會得到一個更乾淨、適合匯入的頁面,其網址為: https://www.taifex.com.tw/cht/3/futContractsDateExcel
現在,我們將 步驟五的乾淨網址 與 步驟四得到的參數 組合起來,就成了最終的完美下載連結:
https://www.taifex.com.tw/cht/3/futContractsDateExcel?queryType=1&goDay=&queryDate=2021%2F05%2F21&commodityId=
有了這個連結,您就可以在 Excel 中透過修改 queryDate 後面的日期,來下載任何一天的資料了。
一鍵下載!現成的 Excel 範本 了解原理後,為了方便大家使用,我已經將上述的抓取機制包裝成一個簡單易用的 Excel 檔案。
範本下載頁面: 下載每日三大法人各期貨契約.xls
使用方法:
下載並開啟 Excel 檔案。
點擊上方提示的「 啟用編輯 」與「 啟用內容 」。
在 B2 儲存格中輸入您想查詢的日期(格式:YYYY/MM/DD)。
在 B3 儲存格中選擇想查詢的契約(預設為「全部」)。
點擊「 下載 」按鈕。
稍待片刻,程式便會自動將指定日期的資料抓取下來,並呈現在「結果」工作表中。
VIDEO