





9
880792
查詢門市庫存
【本書特色】
分享在 Github 獲得 2,300 stars 的大數據 Side Project——FinMind,並一步步帶領讀者從 0 開始,打造專屬於自己的大數據 Side Project。
分享在 Github 獲得 2,300 stars 的大數據 Side Project——FinMind,並一步步帶領讀者從 0 開始,打造專屬於自己的大數據 Side Project。
內容簡介
https://youtu.be/od1RGCdhhII
【本書特色】
分享在 Github 獲得 2,300 stars 的大數據 Side Project——FinMind,並一步步帶領讀者從 0 開始,打造專屬於自己的大數據 Side Project。
不同於僅止於教學示範的 Side Project,FinMind 是少數經過實際使用者驗證、長期維運的資料服務,完整呈現資料工程從架構設計、系統實作,到產品化與穩定營運的全流程。讀者不只學會「怎麼做」,更能理解 為什麼要這樣做。
【你將學到】
資料工程實戰
►使用分散式架構蒐集證交所、櫃買中心、期交所等股市資料,
►並以容器化技術建構爬蟲、API、資料庫與訊息佇列服務。
低成本雲端部署
►單月約 5 美金 即可運行完整系統,
►一站式管理多台分散式機器與服務。
產品化與迭代流程
►從單元測試、CI/CD 到 API 上線,
►建立可持續維護與擴充的資料產品。
監控與視覺化
►建立專屬資料儀表板,並以業界主流監控工具掌握系統狀態。
產品目錄
▍第1 篇 資料工程ETL
►01 本書介紹
►02 開發環境
2.1 開發環境重要性
2.2 Linux 作業系統
2.3 Windows 作業系統
2.4 Mac 作業系統
2.5 Python 開發工具VS Code
►03 Docker
3.1 為什麼先介紹 Docker ?
3.2 什麼是 Docker ?
3.3 安裝 Docker
3.4 安裝 Docker Compose
►04 雲端
4.1 為什麼要用雲端?
►05 資料收集
5.1 Python 環境設置
5.1.1 為什麼需要設置環境?
5.1.2 Python 環境、套件管理工具 --- pipenv
5.1.3 Python 環境、套件管理工具 --- uv
5.2 爬蟲
5.2.1 什麼是爬蟲?
5.2.2 證交所爬蟲範例
5.2.3 櫃買中心爬蟲範例
5.2.4 期交所爬蟲範例
5.3 資料庫架設
5.3.1 什麼是資料庫?
5.3.2 關聯式資料庫 --- MySQL
5.4 上傳資料到資料庫
5.4.1 架構介紹
5.4.2 Clients、Router 資料庫操作
5.4.3 建立 table
5.4.4 爬蟲上傳資料庫
5.5 分散式爬蟲
5.5.1 為什麼需要分散式?
5.5.2 分散式任務轉發 --- RabbitMQ
5.5.3 Python 分散式爬蟲工具 --- Celery
5.5.4 真實應用場景
5.5.5 FinMind 分散式爬蟲架構
5.6 定時爬蟲
5.6.1 為什麼需要定時爬蟲?
5.6.2 APScheduler
5.6.3 APScheduler & 分散式爬蟲架構
►06 資料提供 - RESTful API 設計
6.1 什麼是 API ?
6.2 輕量 API --- Flask
6.2.1 建立第一個 API
6.3 高效能 API --- FastAPI
6.3.1 建立第一個 API
6.3.2 建立 API 回傳真實資料
6.3.3 ApacheBench 壓力測試
6.3.4 API 介面 --- Swagger
►07 容器管理工具 Docker
7.1 為什麼要用 Docker
7.2 建立第一個 Docker Image --- Dockerfile
7.2.1 爬蟲
7.2.2 API
7.3 發布 Docker Image
7.3.1 Docker Hub 介紹
7.3.2 發布 Docker Image
7.4 雲端部署
7.5 Docker Swarm
7.5.1 介紹
7.5.2 建立第一個 Swarm
7.5.3 管理介面 --- Portainer
7.6 佈署服務
7.6.1 MySQL
7.6.2 RabbitMQ
7.6.3 爬蟲
7.6.4 API
▍第2 篇 產品迭代 --- 測試運維
►08 自動化測試
8.1 單元測試 Unit Test
8.1.1 什麼是單元測試 Unit Test ?
8.1.2 第一個測試
8.1.3 測試覆蓋率
8.1.4 爬蟲單元測試範例
8.1.5 API 單元測試範例
►09 CICD 持續性整合、佈署
9.1 什麼是 CICD ?
9.2 CI 持續性整合
9.3 GitLab-CI、以爬蟲專案為例
9.4 GitLab-CI,建立 Docker Image
9.4.1 GitLab-Runner
9.4.2 CICD 建立 Docker Image
9.5 GitLab-CI,佈署新版本
9.6 GitLab-CI、以 API 專案為例
9.6.1 Test - 測試
9.6.2 Build - 建立 Image
9.6.3 Deploy - 佈署
9.7 總結
▍第3 篇 API 產品上線
►10 API 服務網址
10.1 為什麼需要網址?
10.2 No-IP 免費的網址申請
10.3 Let's Encrypt 免費的 SSL 憑證
10.4 Traefik
10.5 API 結合 Traefik
10.6 總結
▍第4 篇 資料視覺化
►11 視覺化工具
11.1 什麼是視覺化?
11.2 Redash
11.3 Redash 帳號設定
11.4 資料庫連接
11.5 匯入資料
11.6 製作第一個圖表
11.7 第一個 Dashboard
11.8 設定下拉式選單
11.9 其他 BI 工具
▍第5 篇 排程管理工具
►12 排程管理工具 - Apache Airflow
12.1 事前準備
12.2 什麼是排程管理工具?
12.3 為什麼選擇 Airflow ?
12.4 什麼是 Airflow ?
12.5 架設第一個 Airflow
12.5.1 為什麼使用 Docker 架設?
12.5.2 開始架設 Airflow
12.5.3 架構介紹
12.6 DAG 介紹
12.7 常見 Operator 介紹
12.7.1 BashOperator
12.7.2 PythonOperator
12.7.3 DummyOperator
12.7.4 BranchPythonOperator
12.7.5 DockerOperator
12.8 Airflow 結合爬蟲 - CeleryExecutor
12.8.1 架構介紹
12.8.2 架設 Airflow + CeleryExecutor
12.8.3 程式碼解析
12.9 結論
►13 Redis 介紹
13.1 麼是 Redis ?
13.2 使用Docker 架設Redis- 結合Celery
▍第6 篇 監控系統
►14 監控工具介紹
14.1 為什麼需要監控系統?
14.2 最知名的開源監控系統之一
14.2.1 Prometheus 介紹
14.2.2 Grafana 介紹
14.2.3 Netdata 介紹
14.2.4 如何尋找監控路徑 Metrics ?
14.3 架設個人化監控儀表板
14.3.1 Netdata
14.3.2 MySQL
14.3.3 RabbitMQ
14.3.4 Airflow
14.3.5 Traefik
14.4 總結
►15 結論
►01 本書介紹
►02 開發環境
2.1 開發環境重要性
2.2 Linux 作業系統
2.3 Windows 作業系統
2.4 Mac 作業系統
2.5 Python 開發工具VS Code
►03 Docker
3.1 為什麼先介紹 Docker ?
3.2 什麼是 Docker ?
3.3 安裝 Docker
3.4 安裝 Docker Compose
►04 雲端
4.1 為什麼要用雲端?
►05 資料收集
5.1 Python 環境設置
5.1.1 為什麼需要設置環境?
5.1.2 Python 環境、套件管理工具 --- pipenv
5.1.3 Python 環境、套件管理工具 --- uv
5.2 爬蟲
5.2.1 什麼是爬蟲?
5.2.2 證交所爬蟲範例
5.2.3 櫃買中心爬蟲範例
5.2.4 期交所爬蟲範例
5.3 資料庫架設
5.3.1 什麼是資料庫?
5.3.2 關聯式資料庫 --- MySQL
5.4 上傳資料到資料庫
5.4.1 架構介紹
5.4.2 Clients、Router 資料庫操作
5.4.3 建立 table
5.4.4 爬蟲上傳資料庫
5.5 分散式爬蟲
5.5.1 為什麼需要分散式?
5.5.2 分散式任務轉發 --- RabbitMQ
5.5.3 Python 分散式爬蟲工具 --- Celery
5.5.4 真實應用場景
5.5.5 FinMind 分散式爬蟲架構
5.6 定時爬蟲
5.6.1 為什麼需要定時爬蟲?
5.6.2 APScheduler
5.6.3 APScheduler & 分散式爬蟲架構
►06 資料提供 - RESTful API 設計
6.1 什麼是 API ?
6.2 輕量 API --- Flask
6.2.1 建立第一個 API
6.3 高效能 API --- FastAPI
6.3.1 建立第一個 API
6.3.2 建立 API 回傳真實資料
6.3.3 ApacheBench 壓力測試
6.3.4 API 介面 --- Swagger
►07 容器管理工具 Docker
7.1 為什麼要用 Docker
7.2 建立第一個 Docker Image --- Dockerfile
7.2.1 爬蟲
7.2.2 API
7.3 發布 Docker Image
7.3.1 Docker Hub 介紹
7.3.2 發布 Docker Image
7.4 雲端部署
7.5 Docker Swarm
7.5.1 介紹
7.5.2 建立第一個 Swarm
7.5.3 管理介面 --- Portainer
7.6 佈署服務
7.6.1 MySQL
7.6.2 RabbitMQ
7.6.3 爬蟲
7.6.4 API
▍第2 篇 產品迭代 --- 測試運維
►08 自動化測試
8.1 單元測試 Unit Test
8.1.1 什麼是單元測試 Unit Test ?
8.1.2 第一個測試
8.1.3 測試覆蓋率
8.1.4 爬蟲單元測試範例
8.1.5 API 單元測試範例
►09 CICD 持續性整合、佈署
9.1 什麼是 CICD ?
9.2 CI 持續性整合
9.3 GitLab-CI、以爬蟲專案為例
9.4 GitLab-CI,建立 Docker Image
9.4.1 GitLab-Runner
9.4.2 CICD 建立 Docker Image
9.5 GitLab-CI,佈署新版本
9.6 GitLab-CI、以 API 專案為例
9.6.1 Test - 測試
9.6.2 Build - 建立 Image
9.6.3 Deploy - 佈署
9.7 總結
▍第3 篇 API 產品上線
►10 API 服務網址
10.1 為什麼需要網址?
10.2 No-IP 免費的網址申請
10.3 Let's Encrypt 免費的 SSL 憑證
10.4 Traefik
10.5 API 結合 Traefik
10.6 總結
▍第4 篇 資料視覺化
►11 視覺化工具
11.1 什麼是視覺化?
11.2 Redash
11.3 Redash 帳號設定
11.4 資料庫連接
11.5 匯入資料
11.6 製作第一個圖表
11.7 第一個 Dashboard
11.8 設定下拉式選單
11.9 其他 BI 工具
▍第5 篇 排程管理工具
►12 排程管理工具 - Apache Airflow
12.1 事前準備
12.2 什麼是排程管理工具?
12.3 為什麼選擇 Airflow ?
12.4 什麼是 Airflow ?
12.5 架設第一個 Airflow
12.5.1 為什麼使用 Docker 架設?
12.5.2 開始架設 Airflow
12.5.3 架構介紹
12.6 DAG 介紹
12.7 常見 Operator 介紹
12.7.1 BashOperator
12.7.2 PythonOperator
12.7.3 DummyOperator
12.7.4 BranchPythonOperator
12.7.5 DockerOperator
12.8 Airflow 結合爬蟲 - CeleryExecutor
12.8.1 架構介紹
12.8.2 架設 Airflow + CeleryExecutor
12.8.3 程式碼解析
12.9 結論
►13 Redis 介紹
13.1 麼是 Redis ?
13.2 使用Docker 架設Redis- 結合Celery
▍第6 篇 監控系統
►14 監控工具介紹
14.1 為什麼需要監控系統?
14.2 最知名的開源監控系統之一
14.2.1 Prometheus 介紹
14.2.2 Grafana 介紹
14.2.3 Netdata 介紹
14.2.4 如何尋找監控路徑 Metrics ?
14.3 架設個人化監控儀表板
14.3.1 Netdata
14.3.2 MySQL
14.3.3 RabbitMQ
14.3.4 Airflow
14.3.5 Traefik
14.4 總結
►15 結論
作者介紹
林子軒(Sam Lin)
現任 17LIVE Data Engineer Manager,專注於資料工程與資料分析領域。
長期投入 Python 與大數據相關技術實務,並致力於將複雜的資料系統,
轉化為可落地、可維運的實際產品,期望為資料工程社群與開發者提供實用且可複製的經驗分享。
經歷
● 17 LIVE Data Engineer Manager。
● 曾任職永豐金證券,軟體工程師。
● 曾任職 Tripresso,資料工程師。
● 曾於 Open UP Summit 2019、WebConf 2025,擔任 Speaker。
● 東華研究所,應用數學碩士。
FinMind
● https://github.com/FinMind/FinMind
● https://finmindtrade.com/
個人 GitHub
● https://github.com/linsamtw
Email
● samlin266118@gmail.com
如對本書有疑問,歡迎寄信到以上信箱。
現任 17LIVE Data Engineer Manager,專注於資料工程與資料分析領域。
長期投入 Python 與大數據相關技術實務,並致力於將複雜的資料系統,
轉化為可落地、可維運的實際產品,期望為資料工程社群與開發者提供實用且可複製的經驗分享。
經歷
● 17 LIVE Data Engineer Manager。
● 曾任職永豐金證券,軟體工程師。
● 曾任職 Tripresso,資料工程師。
● 曾於 Open UP Summit 2019、WebConf 2025,擔任 Speaker。
● 東華研究所,應用數學碩士。
FinMind
● https://github.com/FinMind/FinMind
● https://finmindtrade.com/
個人 GitHub
● https://github.com/linsamtw
● samlin266118@gmail.com
如對本書有疑問,歡迎寄信到以上信箱。
規格
誠品貨碼 / 2683094010001
ISBN13 / 9786267757802
ISBN10 /
EAN貨碼 / 9786267757802
頁數 / 656
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 17X23X2.85CM
級別 / N:無
退貨說明
退貨須知:
- 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
- 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。
依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:
- 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
- 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
- 報紙、期刊或雜誌。
- 經消費者拆封之影音商品或電腦軟體。
- 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
- 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
- 國際航空客運服務。
若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:
- 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
- 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
- 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
- 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
- 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
- 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送














