Python 大數據專案 X 工程 X 產品 資料工程師的升級攻略(第三版)
活動訊息
內容簡介
https://youtu.be/od1RGCdhhII
【本書特色】
分享在 Github 獲得 2,300 stars 的大數據 Side Project——FinMind,並一步步帶領讀者從 0 開始,打造專屬於自己的大數據 Side Project。
不同於僅止於教學示範的 Side Project,FinMind 是少數經過實際使用者驗證、長期維運的資料服務,完整呈現資料工程從架構設計、系統實作,到產品化與穩定營運的全流程。讀者不只學會「怎麼做」,更能理解 為什麼要這樣做。
【你將學到】
資料工程實戰
►使用分散式架構蒐集證交所、櫃買中心、期交所等股市資料,
►並以容器化技術建構爬蟲、API、資料庫與訊息佇列服務。
低成本雲端部署
►單月約 5 美金 即可運行完整系統,
►一站式管理多台分散式機器與服務。
產品化與迭代流程
►從單元測試、CI/CD 到 API 上線,
►建立可持續維護與擴充的資料產品。
監控與視覺化
►建立專屬資料儀表板,並以業界主流監控工具掌握系統狀態。
【本書特色】
分享在 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 結論
序/導讀
【序】
✤ 大數據如何入門?
大數據的時代,各行各業都在試著往大數據前進,將大數據導入企業,那最重要的是什麼呢?模型嗎?筆者認為是資料,沒有資料,一切都是空談,因此基礎工程、基礎建設尤為重要,那要如何完善基礎工程呢?這點就是本書談的核心,資料工程。
✤ 大數據產品
本書從最基本的資料收集、爬蟲開始,到資料庫、RESTful API、分散式,最後走到視覺化,完整的呈現,大數據產品的發展過程。筆者除了做開源資料,為大數據盡一份心力外,也希望將過程,寫成一本書,分享給大眾,希望提供一個入門磚,且不只是入門,本書所用到的技術,已經到 Senior 等級。另外,本書不單純以技術為主軸,而是引入真實案例、真實情境,讓讀者更能體會到,為什麼要使用這些技術,是為了解決什麼樣的問題。
✤ Side Project
工程師、分析師,除了專研技術以外,發展個人的 Side Project,也漸漸成為主流,筆者的專案,FinMind,也是從 Side Project 慢慢發展起來,目前在 GitHub 得到 2,300 stars,算是得到一些認可。開發 Side Project 有什麼好處呢?除了對履歷上加分外,持續開發,接觸的層面會更多更廣,對於架構設計、產品開發上,更加有經驗。且不只是接觸技術,而是有真實的案例,可以證明,你會這項技術,並應用在真實場景。另外,工程師最大的優勢是,有能力做出產品,甚至是分析能力,都有可能幫助讀者,創造出個人產品、品牌,筆者希望能借助本書,讓更多讀者進入這個領域,更多讀者開始建立個人 Project、產品、品牌。
最後,感謝深智數位出版社,邀請筆者撰寫這本書,讓筆者有機會,分享本書內容、產品開發經驗、大數據技術,給各位讀者。
✤ 大數據如何入門?
大數據的時代,各行各業都在試著往大數據前進,將大數據導入企業,那最重要的是什麼呢?模型嗎?筆者認為是資料,沒有資料,一切都是空談,因此基礎工程、基礎建設尤為重要,那要如何完善基礎工程呢?這點就是本書談的核心,資料工程。
✤ 大數據產品
本書從最基本的資料收集、爬蟲開始,到資料庫、RESTful API、分散式,最後走到視覺化,完整的呈現,大數據產品的發展過程。筆者除了做開源資料,為大數據盡一份心力外,也希望將過程,寫成一本書,分享給大眾,希望提供一個入門磚,且不只是入門,本書所用到的技術,已經到 Senior 等級。另外,本書不單純以技術為主軸,而是引入真實案例、真實情境,讓讀者更能體會到,為什麼要使用這些技術,是為了解決什麼樣的問題。
✤ Side Project
工程師、分析師,除了專研技術以外,發展個人的 Side Project,也漸漸成為主流,筆者的專案,FinMind,也是從 Side Project 慢慢發展起來,目前在 GitHub 得到 2,300 stars,算是得到一些認可。開發 Side Project 有什麼好處呢?除了對履歷上加分外,持續開發,接觸的層面會更多更廣,對於架構設計、產品開發上,更加有經驗。且不只是接觸技術,而是有真實的案例,可以證明,你會這項技術,並應用在真實場景。另外,工程師最大的優勢是,有能力做出產品,甚至是分析能力,都有可能幫助讀者,創造出個人產品、品牌,筆者希望能借助本書,讓更多讀者進入這個領域,更多讀者開始建立個人 Project、產品、品牌。
最後,感謝深智數位出版社,邀請筆者撰寫這本書,讓筆者有機會,分享本書內容、產品開發經驗、大數據技術,給各位讀者。
配送方式
-
台灣
- 國內宅配:本島、離島
-
到店取貨:
不限金額免運費
-
海外
- 國際快遞:全球
-
港澳店取:
詳細資料
詳細資料
-
- 語言
- 中文繁體
- 裝訂
- 紙本平裝
-
- ISBN
- 9786267757802
- 分級
- 普通級
-
- 頁數
- 656
- 商品規格
- 23*17*2.85
-
- 出版地
- 台灣
- 適讀年齡
- 全齡適讀
-
- 注音
- 級別
訂購/退換貨須知
退換貨須知:
**提醒您,鑑賞期不等於試用期,退回商品須為全新狀態**
-
依據「消費者保護法」第19條及行政院消費者保護處公告之「通訊交易解除權合理例外情事適用準則」,以下商品購買後,除商品本身有瑕疵外,將不提供7天的猶豫期:
- 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮食品)
- 依消費者要求所為之客製化給付。(客製化商品)
- 報紙、期刊或雜誌。(含MOOK、外文雜誌)
- 經消費者拆封之影音商品或電腦軟體。
- 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書、電子雜誌、下載版軟體、虛擬商品…等)
- 已拆封之個人衛生用品。(如:內衣褲、刮鬍刀、除毛刀…等)
- 若非上列種類商品,均享有到貨7天的猶豫期(含例假日)。
- 辦理退換貨時,商品(組合商品恕無法接受單獨退貨)必須是您收到商品時的原始狀態(包含商品本體、配件、贈品、保證書、所有附隨資料文件及原廠內外包裝…等),請勿直接使用原廠包裝寄送,或於原廠包裝上黏貼紙張或書寫文字。
- 退回商品若無法回復原狀,將請您負擔回復原狀所需費用,嚴重時將影響您的退貨權益。





商品評價