【Python實戰篇】用Flask製作港股通北水追蹤器

我們想讓你知道的是
筆者撰寫了一個數據擷取程式,可以一次過到港交所網頁自行下載指定時期北水買賣港股的數據。
港股通開通近4年,現時有逾五百多隻股份可以讓北水買賣,而港交所網頁每日均列出北水在每隻股份的持股量,但要分析個別股份的持股變化及走勢,卻要逐日把數據下載,費時失事,於是筆者撰寫了一個數據擷取程式,可以一次過到網頁自行下載指定時期的數據,轉化成企理的數據庫。然後再用flask撰寫一個數據展示程式,並以互動網頁形式顯示,讀者可到這裡輸入港股通的股份代號,程式便會輸出今年至今每日的北水持股量,每日增/減持變化圖,以及一個每日持股股數的對照表。讀者可以由此得知北水對該個股股價走勢的影響,以及看好或看淡該股。
由數據可見,北水於5月頭便開始減持騰訊(0700),直到8月底才沽壓稍歛。至於匯豐(0005),則自年頭一輪追入後,近期才再見北水捧場,但聲勢遠不及年頭強大。一些北水持重貨的股份,如新華製藥(0719),雖然股價受政策影響大幅回落,但北水仍然密密吸納,未有洩氣情況。種種走勢,用以下的程式便可一目了然。

Python成為近年最受歡迎的程式語言,除了易學易上手外,還因為有龐大的程式庫支援,令程式員有很多捷徑可以走。不過,之前示範的程式,都需要讀者自行下載代碼在Python的編繹器內運行,未能即時展示成果。因此今次便嘗試以Python的flask應用框架,製作一個可在網上直接執行的港股通北水追蹤器,令沒有程式經驗的讀者也能看到實際應用。
讀取數據的程式,主要用了我過去常用的Selenium及BeautifulSoup框架,模擬人手逐頁下載數據,並將其組合成一個資料庫供之後使用。相比人手逐頁copy & paste,程式可以三數分鐘便下載過百日的數據,而且做了基本整理,正是自動化的好處。不過,實際處理上來,仍有一些複雜的地方,如公司改名,便會出現一個股票編號、兩個公司名稱的情況,又如公司供股,也有可能會出現臨時股票編號,而原來的股票編號所擷取的數據便出現斷層。現時程式只處理首一個情況,未能處理第二個情況(筆者太懶),惟相信後者佔整體數據只是少數,有興趣的讀者不妨完善之。程式northwater.py已放於文末,只是短短數十行程式。
筆者利用這程式,下載了今年至今的所有股份持股量數據,之後便要用flask來撰寫一個可讓網頁讀到及讓用戶互動的程式。這方面準備工夫較多,先下載flask框架,再設定一個python的虛擬環境(virtual environment),然後把程式需要用到的框架都寫到一個requirements.txt的文字檔案內,這是方便之後雲端服務了解程式的需要,不用每次均下載一大堆無用的框架,浪費資源。這些設定都是三幾行指令碼的事情,讀者可到flask的官方網頁了解。
前期準備功夫完成後,便可以撰寫程式,輸入flask框架及相關數據庫,其主要程序結構如下:
app = Flask(__name__)
@app.route("/", methods=['POST', 'GET'])
def submit_new_profile():
if request.method == 'POST':
.
.
return render_template(...)
elif request.method == 'GET':
.
.
return render_template(...)
首行是指定動作,第二行則是當在首頁出現存取表格資料時啟動submit_new_profile程序,若是用戶輸入資料,則request.method是'POST',按照用戶輸入的股票編號抽取數據庫中的時序數據,然後再製作相關的圖形,並更新index.html檔案。
除了以上幾行程式外,其餘與Python一般的程式無異,詳細程式看文末的main.py列表。
那麼index.html又有可不同呢?其實只是加入了一些雙重大括號的變數如{{name}}等,這些變數是與main.py作溝通用,並可以被main.py來動態更新的。如此一來,main.py便可以與網民互動,就算是程式中的圖表,在html檔中,亦只是一個簡單的{{model_plot}}便搞定。可以說html檔成為一道道填充題,內容交由Python處理。

各樣元素齊備後,便可以在flask模擬的一個簡單本地伺服器上測試,確定程式無誤,便可以選擇一個雲端服務商把程式上線(google cloud, 亞馬遜的AWS,或微軟的Azure均可),筆者則選擇免費的Pythonanywhere ,先登記一個帳戶,然後開設一個新的web app,再把程式上載,包括requirements.txt, main.py, index.html(這檔案一般會放在templates的子目錄下),以及相關的數據庫、圖片及字型庫。大功告成?
別想得太美了,整個過程,最令人沮喪的,並非要學習試用flask框架,而是除蟲工作,以為在本地伺服器環境下運作正常的,到雲端就不知為何無法再運作了,看錯誤訊息永遠摸不著頭腦,左查右查之下,才發現Pythonanywhere要求載入檔案必須輸入完整的檔案路徑,否則會發出檔案不存在的警告。
另一個痛點,是廣受歡迎的繪圖框架matplotlib並不支援中文,若要顯示中文,必須指定一個中文字庫,方能正常顯示。具體作法坊間有很多,但不是招招都管用,這又成為一個實驗試錯的過程,筆者現時用的是google開發的思源宋體。
雖然今次頗多挑戰,但因為flask可以將完成品直接送到網民面前,讓不懂Python的人也能直接使用,而且日後還會多多使用,倒也不算白費功夫。事實上,用flask來撰寫web app,令Python應用可以直接與互聯網語言html配搭,加上雲端服務,便可以直接執行,連伺服器設定等繁瑣工作都可以慳返。昔日寫web application可能要學php, mysql等後台語言,但現在都可以由Python一手包辦,這正是Python的強大之處。



Tags:
【圖解】在家要如何做到「一淨、二靜、三循環」?三菱電機「氣場大師」打造好氣場與「善循環」的科技大解密

我們想讓你知道的是
三菱電機秉持日本職人匠心,將獨家專利科技應用於家電設計,打造居家空氣優化的全方位解決方案。選對節能又智能的家電,兼顧清淨功能、安靜運轉與良好循環,你也可以是「氣場大師」!
素有「空氣專家」美譽的三菱電機,結合日本百年技術與電機專業,在台深耕已超過70年,針對在地氣候環境與消費者需求打造最合適的商用與家用電器產品。今年,台灣三菱電機以全新「氣場大師」為概念,透過全系列產品線打造「一淨、二靜、三循環」全方位空氣優化居家環境,創造良好氣場,讓家與家人享受美好「善循環」。
溫度、濕度、流通度、潔淨度、保鮮度:從五大方向打下好氣場基礎

居家環境中常見影響「氣場」的問題大致分為五大方向,首先在溫度方面,極端氣候不再是百年一遇,夏季高溫熱浪、冬季霸王寒流的威力不容小覷,採用兼具節能與空氣淨化的空調不僅能降低耗能,還能提升呼吸健康與環境舒適度。另外,濕度過高也是許多台灣居家的一大痛點,尤其當梅雨季或季節交替時,連續多天陰雨綿綿,容易讓家具或牆面冒出黴菌,甚至皮膚長濕疹、影響身體健康。
空氣流通度則是長時間待在門窗緊閉的室內空間時,人們會相當有感的問題,而良好的通風換氣能將廢空氣排出,引入新鮮空氣也帶來好心情。家中有小朋友的家長或深受過敏困擾的人,最關心的則是空氣潔淨度問題,在受疫情影響的這幾年,改善居家空氣品質也成為家電研發的重點。除了空間氣場,人體氣場的保養也備受重視,如維繫身體健康與能量來源的食材要如何維持保鮮度,更成為煮婦煮夫們在意的課題。
三菱電機全系列空調家電產品運用專利技術,分別針對「溫度、濕度、流通度、潔淨度、保鮮度」五大方向提出解方,全系列科技家電產品以「一淨、二靜、三循環」三步驟打造更舒適、安心的生活環境,讓台灣民眾能輕鬆享有ME TIME美好居家時光。
一淨:以獨家濾淨技術,有效捕捉空氣中有害物質,同時抑制懸浮病毒達99%,守護每日一呼一吸間的潔淨空氣

三菱電機不論是在空調或除濕機等家電製品上,皆搭載專利濾淨技術,以達到進氣後清淨,吹送出宛如自然山林般純淨空氣的效果。
預計於今年四月份正式上市的旗艦款「三效合一」變頻空清除濕機,全新搭載HEPA、活性碳濾網,可一次達到除濕、除臭、空氣清淨三重效果,且根據國內外專業測試機構檢測,針對懸浮病毒的抑制率可達99% [註1],PM2.5集塵率更達99.9% [註2]的高超表現。此外,透過三菱電機獨家智慧變頻與AI智慧偵測設計,能根據環境需求自動調整成適宜的除濕與空氣清淨模式,提升機器運作效能。
三菱電機近年研發出的「Plasma Quad Connect,簡稱 PQC」高效電漿淨化裝置,可讓消費者選購加裝在多款家用空調上,原理為對裝置中的「鎢帶電極」施加6,000伏電壓產生電漿,有效去除空氣中的病毒、細菌、黴菌、過敏原、灰塵和PM2.5等各種污染物質,透過獨家專利科技達到淨化室內空氣效果。
二靜:以近乎無聲運轉的設計,給家人不被打擾的寧靜時刻,讓身心靈皆放鬆

三菱電機除了專注產品設計的高品質與細節,更在乎使用者日常生活中的體驗與感受,因此全系列產品線皆以近乎無聲運轉的設計,為消費者打造兼具放鬆及舒適的空間。
三菱電機「靜音大師」家用變頻空調正如其名,自上市以來「超靜音運轉」表現在業界頗受好評,是家中有幼嬰,以及對聲音敏感族群的首選品牌。除此之外,頂規旗艦款GT系列搭載「Easy Clean 易拆易清設計」,更擁有獨家專利「DBC奈米複合塗層技術」,讓民眾不僅能輕鬆維持空調產品清潔,又能達到節能省電及維持高效運轉的效果。今年三菱電機也不斷升級、積極擴展產品陣容,以滿足台灣市場多元的空間需求,「靜音大師」頂規旗艦款GT系列及耐用經典款HT系列均升級追加大容量10kw機種,可適用於約14-17坪大坪數空間,新品預計將於今年3月開始販售。
另外即將上市的「三效合一」變頻空清除濕機在強化空氣清淨與除濕方面,透過獨家「三重除濕系統」設計,不僅實現高效除濕率,另搭配智慧變頻壓縮機,同時滿足節能省電的需求,以及獨家設計大型渦輪式多翼風扇,打造近乎無聲的靜音效果,即使夜晚除濕也能一覺好眠。
三循環:匠心打造好氣場,無限傳遞善循環

除空清除濕機與靜音變頻空調,三菱電機更透過其他產品優異性能的加乘效果,為消費者全方位把關生活品質。像是三菱電機首創先驅開發的Lossnay全熱交換器,即使在無法開窗的情況下,也能做到全室通風換氣。此外還可搭配空清循環扇,搭載Plasma Quad高效電漿淨化技術,提升室內空氣品質的同時,再透過DC循環電風扇進一步將淨化後的好空氣,吹送至家人所在的每個角落,讓「好氣場」在室內流動形成美好的「善循環」。
廚房家電方面,三菱電機秉持一貫的匠心精神,打造兼具美型與效能的電冰箱、冷凍櫃等保鮮家電產品,透過精準控溫並調節冰櫃內空氣,鎖住食材新鮮度與營養、隔絕氣味不易干擾。透過專利技術與產品科技,以「氣場大師」專業提升家中正能量、健康、氣氛及互動。
三菱電機不僅持續為台灣消費者推出豐富多元的科技家電產品,助力民眾提升生活品質,更注重節能環保與永續發展。邀請大家一起跟著三菱電機「氣場大師」,為居家環境打造潔淨、安靜、充分循環的好氣場,將好心情、好氣氛傳遞給每一位家人。
三菱電機官網
註解2:(測試機構)SGS Taiwan Ltd.(測試方法)於1.25m×0.65m×1.25m的密閉空間,量測2.5μm粒子的初期濃度與本體運轉1小時後的濃度,計算PM2.5去除率、(測試結果)去除率99.9%。