您是否手動追蹤加密貨幣價值?
當您的加密貨幣價值上漲或下跌特定值時,您想透過電子郵件收到通知嗎?
不想再僅僅為了查看代幣的價值而訪問加密貨幣交易網站嗎?
如果您回答“是”,那麼您來對地方了。
無論您是經驗豐富的交易者還是加密貨幣愛好者,了解最新價格都至關重要。值得慶幸的是,Python 可以幫助自動化此流程,從而節省您的時間和精力。
在這篇文章中,我將引導您完成一個簡單的 Python 腳本,該腳本可以即時追蹤特定交易所上任何加密貨幣的價值。
加密貨幣市場 24/7 運行,價格可能在幾秒鐘內發生變化。透過自動化追蹤過程,您可以:
要繼續進行操作,請確保您具備以下條件:
共有三個文件:
完整程式碼可以在這個 GitHub gist 找到。
注意:可以重構程式碼以提高可讀性和效率,但這裡的主要重點是功能。
注意:在這個例子中,我使用「Kraken」作為加密貨幣交易所,我追蹤價格。
當(例如)Polkadot 幣的價值增加 1 歐元時,您會收到以下電子郵件通知:
導入必要的庫。
load_dotenv()
從 .env 檔案載入電子郵件憑證 (PASSWORD) 等變數以進行安全處理。
load_dotenv()
用途:當達到價格閾值時發送 HTML 格式的電子郵件通知。
從外部檔案 (email_template.html) 載入電子郵件範本。
def send_email(subject, price, currency_name, image_url, price_change): sender_email = "your_email@gmail.com" receiver_email = "your_email@gmail.com" password = os.getenv("PASSWORD") -> here you need to type your generated google account app password msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = subject if price_change > 0: change_emoji = "?" elif price_change < 0: change_emoji = "?" else: change_emoji = "⚖️" with open('email_template.html', 'r', encoding='utf-8') as f: html_template = f.read() html_content = html_template.format( currency_name=currency_name, price=price, image_url=image_url, change_emoji=change_emoji ) msg.attach(MIMEText(html, 'html')) try: server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(sender_email, password) server.sendmail(sender_email, receiver_email, msg.as_string()) print("E-mail sent!") except Exception as e: print(f"Error occured: {e}") finally: server.quit()
目的:新增延遲以防止對目標網站的過多請求,避免被偵測為機器人。
def delay(): time.sleep(2)
用途:從 JSON 檔案載入加密貨幣詳細資料(例如名稱、url、imagesrc)。
def load_cryptocurrencies(): with open('cryptocurrencies.json', 'r') as f: return json.load(f)
用途:設定一個無頭 Chrome 瀏覽器來抓取加密貨幣價格。
headless:在沒有 GUI 的情況下執行 Chrome。
自訂使用者代理:模仿真實的瀏覽器使用情況,以便更好地規避機器人偵測。
chrome_options = Options() header = Headers(browser="chrome", os="win", headers=False) customUserAgent = header.generate()['User-Agent'] chrome_options.add_argument(f"user-agent={customUserAgent}") chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
cryptocurrencies = load_cryptocurrencies() for currency in cryptocurrencies: try: url = f"https://www.kraken.com/prices/{currency['url']}" driver.get(url) delay() price_element = driver.find_element(By.CLASS_NAME, "asset-price.black-color")
解析價格文字並將其轉換為浮點數進行比較和計算
price = price_element.text.strip().replace('€', '').replace(',', '.') try: price = float(price) except ValueError: print(f"Error while conversion price for {currency['name']}: {price}") continue
從文字檔案中檢索上次儲存的價格。如果不存在,則假設沒有先前的數據。
計算價格變動 (price_change)。
previous_price_file = f"previous_price_{currency['url']}.txt" try: with open(previous_price_file, 'r') as file: previous_price = float(file.read().strip()) except FileNotFoundError: previous_price = None price_change = price - previous_price
設定價格變更通知的門檻:
注意:如果您想追蹤更多位數的硬幣,您需要在此處進行調整。
if previous_price is not None: if price < 100: if abs(price - previous_price) >= 1: subject = f"New price {currency['name']}: {price}" send_email(subject, price, currency['name'], currency['imagesrc'], price_change) else: if abs(price - previous_price) >= 5: subject = f"New price {currency['name']}: {price}" send_email(subject, price, currency['name'], currency['imagesrc'], price_change)
將當前價格保存到文字檔案以供將來比較。
with open(previous_price_file, 'w') as file: file.write(str(price))
except Exception as e: print(f"Error occured for {currency['name']}: {e}")
所有任務完成後關閉瀏覽器實例。
要使其每小時運行一次,請添加以下內容:
driver.quit()
crontab -e
按照本指南,您可以追蹤加密貨幣價格並在睡覺時接收即時電子郵件通知!
如果您覺得這篇文章有幫助或有改進腳本的想法,請隨時在下面發表評論?
祝您編碼愉快,交易成功!
以上是使用 GMAIL 和 Python 自動追蹤加密貨幣價格的詳細內容。更多資訊請關注PHP中文網其他相關文章!