用 Python 爬蟲與 Flask 實作懶人版個股基本面指標工具

活動訊息
用 Python 爬蟲與 Flask 實作懶人版個股基本面指標工具

在這場分享裡,除了可以聽到如何用 Python 抓取個資訊做分析、用 Flask 寫 API 並用 Docker 部署,還可以聽到 PyCharm 的各種生產力技巧,尤其是透過重構功能讓修改程式架構時減少失誤。

活動日期:2020 年 09 月 26 日

活動時間:PM 03:00

主辦單位:

 
講者簡介
Max Lai
童綜合醫院 AI Lab Senior Manager

Max 的專長是電腦視覺(Computer Vision),在台中共同發起了 Taichung.py 以及 Agile Taichung 二個社群,樂於研究與分享「 Python」 與「精實開發」的相關經驗。

學會了用 Python 寫爬蟲、學會了用 Flask 做 API 後可以拿來做什麼應用呢?別讓一成不變的範例限制了你的想像,且讓童綜合醫院 AI Lab Senior Manager,同時也是 Taichung.py 及台中敏捷社群的主辦人 Max,分享他如何用 Python 爬蟲抓取個股公開資訊並將結果以 Flask 框架做成 API,成為懶人版個股基本面指標工具的示範。

主題分享

為了示範如何從想法到實現,Max 在這場分享裡採漸進式的實作方式,整個流程可以用下面這張投影片說明。

專案漸進式實作流程

首先,為了驗證爬蟲行為,Max 先用 Jupyter Notebook 抓資料,使用 pandas 這個資料分析函式庫截取股票的公開資訊,由於 Jupyter Notebook 可以邊寫邊執行的特性,讓他可以很快速的驗證爬蟲行為的正確性。在開發完爬蟲動作後,Max 把 Notebook 裡的 Python 程式碼貼進 PyCharm 裡,並用 PyCharm 的重構工具讓爬蟲程式更具彈性,透過 Extract Variable、Extract Method、Move、Rename 等功能,讓程式可以接受不同股票代號的查詢,進而成為更好維護的 Python Module。接著,Max 在專案裡導入 Flask 框架,快速實作出可以接受 HTTP Request 查詢股票代碼,並依矩陣式存股法的分析方式,以 JSON 格式回傳評估結果。最後,運用 Dockfile 將整個應用程式包裝成一個 Docker Image,就可以輕鬆部署至雲端主機。就這樣,一個可以截取個股資訊、分析股票獲利能力的後端 API 就在約 40 分鐘內實作完成。

Max 所在的團隊因為有大量進階功能及團隊合作的需求,所以全員都是使用 PyCharm Professional 版工作。Max 提到我們一般在寫程式的時候並沒有辦法在一開始就考慮的很周到,往往是先滿足需求、驗證流程後才開始重構,因此他們團隊非常依賴 PyCharm 的重構工具。因為 PyCharm 會很聰明的對 Package、對程式碼做 Index,所以即便寫程式的時候忘記 Import,PyCharm 會自動提示哪些缺漏的東西該補上。有了 PyCharm 強大的重構工具,整個團隊都能快速的修改程式碼,而不需擔心改壞,在開發效率上有顯著的提升。

本次講座進行時因網路延遲情況較嚴重,原訂 Max 要分享他們團隊導入敏捷開發的內容因此取消,未來會再安排其他場次分享。另外, 講座中分享的分析資料、選股工具及投資評估策略僅供程式開發示範使用,不暗示任何買賣建議任何依本講座內容所發生的交易損失需自行負責,投資前是謹慎評估風險

問答

Q. 講者按鍵盤上的組合鍵時,螢幕下方會出現對應按鍵的浮動框。請問是如何辦到的呢?

這其實是透過一個 Plugin 達成的。只要在 PyCharm 裡安裝 Presentation Assistant 這個 Plugin,每次按下鍵盤快速鍵時,就會自動彈出綠色的提示框,標示出當前作業系統的快速鍵。這個 Plugin 對於實務展示、教育訓練都很有幫助,且適用於 JetBrains 全系列 IDE,有需要的朋友別錯過了!

Q. 請問 requirements.txt 是如何建立的?透過 IDE 產生的嗎?

本場因為時間限制,講者 Demo 時是直接拿預先準備好的檔案貼上匯入至專案。實際開發時,可以透過兩種方式完成:1. 從 PyCharm 的 Tools 選單裡選 Sync Python Requirements,在彈出視窗裡設定檔名(預設使用 requirements.txt)、版本號限制條件後按 OK 來產生。或是 2. 直接開啟 Terminal 並輸入 $ pip freeze > requirements.txt 指令來產生。

問卷調查

利用本次活動的過程進行了簡單的問卷調查,在這邊一併分享結果給大家參考:

Q. 參與過的 Python 專案類型?

參與過的 Python 專案類型

Q. 今天最有收獲的部份是?

今天最有收獲的部份是

從問卷的結果看來,不少朋友都是使用 Python 做爬蟲及資料科學方面的應用,而開發 API 的比例也是略高於網站及 Console,而 Max 為大家展示的 PyCharm 重構技巧果然引起很大的共鳴!根據大家在問答時間及會後問卷裡的「許願」,未來我們還會再舉辦跟 API 開發、資料分析有關的主題,也會再跟大家分享更深入的重構、Debug 及 Docker 整合技巧,歡迎大家持續關注!。希望這次的「用 Python 爬蟲與 Flask 實作懶人版個股基本面指標工具」能讓大家對使用 Python 寫爬蟲、用 Flask 寫 API 及 PyCharm 操作技巧有更深入的認識。我們下次見!

範例程式碼