Microsoft Excel提供了QueryTable的方法來抓取網頁表格的資料。
Google Spreadsheets提供了importHtml的方法來抓取網頁表格的資料。
IMPORTHTML(網址, 查詢, 索引)
- 網址 - 要檢查的網頁所在網址,包括通訊協定名稱 (例如 http://)。
- 請注意,網址的值必須放置在引號內,或者是一個含有適當文字的儲存格參照。
- 查詢 - 根據存放資料的結構類型而定,此值可設定成 "list" (清單) 或 "table" (表格)。
- 索引 - 從 1 開始累進的索引值,指明應傳回 HTML 原始碼中界定的哪一個表格或清單。
- 系統會分開處理清單及表格的索引;如果 HTML 網頁上同時有清單和表格,這兩種元素可能都會有 1 的索引值。
=ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India", "table",4)今天我們就用ImportHtml抓取證交所三大法人買賣超金額資料
Step 1. 在Google的雲端硬碟,新增一個 "三大法人買賣超金額統計表"。
Step 2. 三大法人買賣金額統計表連結 http://www.twse.com.tw/ch/trading/fund/BFI82U/BFI82U.php
在儲存格 A1中輸入
=importHtml("http://www.twse.com.tw/ch/trading/fund/BFI82U/BFI82U.php", "table", 10)
資料匯入試算表後,會見到亂碼顯示,這是因為Spredsheet是預設將資料以"西歐語系"來呈現,因此需要對儲存格資料進行中文解碼動作。
Step 3. 開啟 工具/指令碼編輯器,進行JavaScript的編碼程式撰寫,這就像是在編寫Execl VBA 一樣,只是在Google Spreadsheets上是使用JavaScript來進行編寫。
在指令碼編輯器中輸入以下輸入以下程式碼
function encode_utf8( s ){ return Utilities.newBlob("").setDataFromString(s, "ISO-8859-1").getDataAsString("UTF-8") ; } function encode_big5( s ){ return Utilities.newBlob("").setDataFromString(s, "ISO-8859-1").getDataAsString("big5") ; }
撰寫好JavaScript程式碼後,記得進行編譯,編譯成功後才能使用自定函數。
Step 4. 在儲存格 A10中輸入 =encode_big5(a2),即可進行中文解碼動作。
Step 5. 最後將儲存格範圍擴大到 A10:D15,即可將全部內容進行中文解碼動作。
參考資料
- IMPORTHTML - 文件編輯器說明
- Google Spreadsheet 學習筆記
- Google Spreadsheets 抓外部資料的函數
- Google Developers Apps Script --- Class Sheet
- 使用Google Apps Script讀取試算表中的資料