您是否手动跟踪加密货币价值?
当您的加密货币价值上涨或下跌特定值时,您想通过电子邮件收到通知吗?
不想再仅仅为了查看代币的价值而访问加密货币交易网站吗?
如果您回答“是”,那么您来对地方了。
无论您是经验丰富的交易者还是加密货币爱好者,了解最新价格都至关重要。值得庆幸的是,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中文网其他相关文章!