使用Python實(shí)現(xiàn)實(shí)時(shí)金價(jià)監(jiān)控并自動(dòng)提醒功能
工具能干啥?
簡(jiǎn)單來(lái)說(shuō)就是:
- 自動(dòng)盯著黃金價(jià)格??
- 賺了40塊會(huì)開(kāi)心提醒我"可以賣(mài)啦!"
- 虧了60塊會(huì)哭唧唧提醒我"注意止損!"
- 每30秒偷偷看一眼價(jià)格,完全不用我 操心
手把手教你用
1、先裝好這些"食材"
pip install selenium webdriver-manager beautifulsoup4
2、代碼實(shí)現(xiàn)講解
代碼分為幾個(gè)關(guān)鍵模塊,下面我們逐段解析。
1. 用戶(hù)輸入?yún)?shù)
x = float(input("請(qǐng)輸入買(mǎi)入時(shí)金價(jià)(元/克): ")) y = float(input("請(qǐng)輸入買(mǎi)入金額(元): ")) buy_weight = y / x print(f"買(mǎi)入克數(shù): {buy_weight:.4f} 克")
用戶(hù)只需輸入兩項(xiàng):買(mǎi)入時(shí)金價(jià)和買(mǎi)入金額,程序會(huì)自動(dòng)幫你算出買(mǎi)入的黃金克數(shù)(忽略手續(xù)費(fèi))。
2. 設(shè)置無(wú)頭瀏覽器(Selenium)
chrome_options = Options() chrome_options.add_argument("--headless") # 無(wú)界面運(yùn)行 chrome_options.add_argument("--disable-gpu") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
我們使用 Selenium + webdriver-manager
來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)訪(fǎng)問(wèn),并設(shè)置瀏覽器為“無(wú)頭模式”,即后臺(tái)運(yùn)行,不彈出瀏覽器窗口,運(yùn)行更輕便。
3. 抓取實(shí)時(shí)金價(jià)(BeautifulSoup + 正則)
html = driver.page_source soup = BeautifulSoup(html, 'html.parser') all_titles = soup.find_all('span', class_='gold-price-persent-title') ...
通過(guò) BeautifulSoup
來(lái)解析頁(yè)面HTML內(nèi)容,找到金價(jià)字段并用正則提取數(shù)字,兼容jd移動(dòng)端頁(yè)面結(jié)構(gòu)(這個(gè)頁(yè)面PC訪(fǎng)問(wèn)可能為空白,但移動(dòng)端HTML源碼中是有數(shù)據(jù)的)。
4. 盈虧計(jì)算與提醒邏輯
current_value = gold_price * buy_weight profit = current_value - y ... if profit >= 40: popup("賣(mài)出提醒", msg) elif profit <= -60: popup("虧損提醒", msg)
這里是盈利邏輯的核心部分,實(shí)時(shí)計(jì)算你當(dāng)前賬戶(hù)中黃金價(jià)值與初始投資的差額,并在盈虧超過(guò)指定值時(shí)通過(guò)彈窗提醒。
彈窗是通過(guò) ctypes.windll.user32.MessageBoxW
實(shí)現(xiàn)的,兼容 Windows 系統(tǒng),效果如下:
5. 自動(dòng)循環(huán) + 中斷退出
while True: ... time.sleep(30)
腳本默認(rèn)每30秒刷新一次網(wǎng)頁(yè)獲取新金價(jià),并自動(dòng)循環(huán)運(yùn)行。如果你按下 Ctrl + C
,腳本會(huì)優(yōu)雅退出并關(guān)閉瀏覽器。
項(xiàng)目實(shí)測(cè)效果
實(shí)際運(yùn)行過(guò)程中,當(dāng)我輸入:
請(qǐng)輸入買(mǎi)入時(shí)金價(jià)(元/克): 780.52 請(qǐng)輸入買(mǎi)入金額(元): 10000
程序每半分鐘自動(dòng)更新一次金價(jià),并在達(dá)到設(shè)定盈虧條件時(shí)自動(dòng)彈出提醒框,及時(shí)提示買(mǎi)賣(mài)時(shí)機(jī),非常實(shí)用!
可以拓展的功能
這個(gè)項(xiàng)目只是一個(gè)基礎(chǔ)框架,你可以根據(jù)自己的需求繼續(xù)拓展:
- 自動(dòng)繪制金價(jià)走勢(shì)圖;
- 集成郵件或微信推送,可以把
popup
換成微信機(jī)器人通知; - 設(shè)置運(yùn)行時(shí)間區(qū)間(如早9點(diǎn)到晚8點(diǎn));
- 接入AI判斷買(mǎi)賣(mài)信號(hào)
- 可以同時(shí)監(jiān)控支付寶、銀行APP的價(jià)格……
總結(jié)
這個(gè)小工具雖然簡(jiǎn)單,卻非常實(shí)用,適合有黃金投資習(xí)慣的朋友隨時(shí)監(jiān)控自己的盈虧情況。通過(guò) Selenium + BeautifulSoup + ctypes
的組合,我們可以實(shí)現(xiàn)自動(dòng)化盯盤(pán)、節(jié)省精力、提高效率!
以上就是使用Python實(shí)現(xiàn)實(shí)時(shí)金價(jià)監(jiān)控并自動(dòng)提醒功能的詳細(xì)內(nèi)容,更多關(guān)于Python金價(jià)監(jiān)控并提醒的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python3 設(shè)置多進(jìn)程名稱(chēng)并在ps命令中可見(jiàn)(Centos7 系統(tǒng))
setproctitle 是一個(gè) Python 模塊,用于設(shè)置進(jìn)程標(biāo)題(process title),通過(guò)設(shè)置進(jìn)程標(biāo)題,可以讓進(jìn)程在系統(tǒng)級(jí)的進(jìn)程管理工具中展示自定義的名稱(chēng),方便用戶(hù)查看和管理進(jìn)程,本文介紹python3 設(shè)置多進(jìn)程名稱(chēng)并在ps命令中可見(jiàn),感興趣的朋友一起看看吧2024-03-03Python之Web框架Django項(xiàng)目搭建全過(guò)程
這篇文章主要介紹了Python之Web框架Django項(xiàng)目搭建全過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05pandas之?dāng)?shù)據(jù)修改與基本運(yùn)算方式
這篇文章主要介紹了pandas之?dāng)?shù)據(jù)修改與基本運(yùn)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python連接mysql調(diào)用存儲(chǔ)過(guò)程示例
這篇文章主要介紹了python連接mysql調(diào)用存儲(chǔ)過(guò)程示例,需要的朋友可以參考下2014-03-03Selenium 安裝和簡(jiǎn)單使用的實(shí)現(xiàn)
這篇文章主要介紹了Selenium 安裝和簡(jiǎn)單使用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python中的隨機(jī)數(shù)種子seed()用法說(shuō)明
這篇文章主要介紹了python中的隨機(jī)數(shù)種子seed()用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07淺談OpenCV中的新函數(shù)connectedComponentsWithStats用法
這篇文章主要介紹了淺談OpenCV中的新函數(shù)connectedComponentsWithStats用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Python基于socket模塊實(shí)現(xiàn)UDP通信功能示例
這篇文章主要介紹了Python基于socket模塊實(shí)現(xiàn)UDP通信功能,結(jié)合實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)IPV4協(xié)議下的UDP通信客戶(hù)端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2018-04-04