# 帳戶連結系統 功能 : 1. 能在程式頁面中顯示所有銀行帳戶餘額 2. 搭配excel進行理財運算 設計思路: 1. 前往銀行網站,紀錄人為操控模式 2. 利用selenium來獲取餘額 3. 將餘額及資訊顯示在excel上 ## 銀行網站 這裡採用國泰世華銀行作為範例 https://www.cathaybk.com.tw/MyBank/Home/Login **以下是剛進入頁面時所需要的資訊** > 身分證字號原始碼 >  > 用戶代號原始碼 >  > 網銀密碼原始碼 >  > 登入按鍵原始碼 >  > > **按完按鍵後,來到主頁即可獲得資產總額** > 台幣資產總額原始碼 >  > ## 開始設計程式碼 爬蟲的第一步則是採用selenium的webdriver [使用手冊](https://selenium-python.readthedocs.io/installation.html#) ``` from selenium import webdriver #瀏覽器套件 from selenium.webdriver.chrome.options import Options #創建Chrome驅動程序 from selenium.webdriver.common.by import By #檢索套件 ``` 在登入後需要抓取網頁原始碼 這裡採用BeautifulSoup來進行排版 ``` from bs4 import BeautifulSoup #用於排版html import time #時間模組 ``` ``` chrome_opt = Options() chrome_opt.add_argument('--headless') #無頭模式 chrome_opt.add_argument('--disable-gpu') #禁用gpu driver = webdriver.Chrome(options=chrome_opt)#使用Chrome作為瀏覽器 driver.get('https://www.cathaybk.com.tw/MyBank/Home/Login') #將銀行網址放入,導入此頁 elem = driver.find_element(By.ID,'CustID') #身分證字號ID elem.send_keys('************') #輸入身分證字號 elem = driver.find_element(By.ID,'UserIdKeyin') #用戶代號ID elem.send_keys('************') #輸入用戶代號 elem = driver.find_element(By.ID,'PasswordKeyin') #網銀密碼ID elem.send_keys('************') #輸入網銀密碼 driver.find_element(By.XPATH,'//*[@id="divCUBNormalLogin"]/div[2]/button').click() #登入按鍵ID,並點擊此按鈕 time.sleep(0.3)#跳轉頁面最少需要0.3s,否則以下將會抓取登入頁面 html = driver.page_source #抓取網頁原始碼 soup = BeautifulSoup(html, 'html.parser') # 用soup排版html tags = soup.find_all("label", class_="totalAssets MoneyVisibility") #抓取資產總額所在原始碼 for i in tags[0]: ans = float(i.replace(',','')) #將數字中的逗號去掉並轉換成浮點數 print(ans) ``` 執行結果  接下來將數值儲存到EXCEL裡的B2格 ``` file_name = '資產收支表.xlsx' wb = openpyxl.load_workbook(file_name) #讀取xlsx檔案 sheet = wb[wb.sheetnames[0]] #獲取第一個工作表 sheet['B2'] = ans sheet['B2'].number_format='_-$* #,##0_-;-$* #,##0_-;_-$* "-"_-;_-@_-' #將格式樣式設定為貨幣 參考excel樣式表 wb.save('資產收支表.xlsx') ``` [excel格式樣式](https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/numbers.html)  這邊基本的串連方式已經完成,後續計算的動作用excel操作會更方便
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up