Verfolgen Sie die Werte von Kryptowährungen manuell?
Möchten Sie per E-Mail benachrichtigt werden, wenn der Wert Ihrer Kryptowährung um einen bestimmten Wert steigt oder fällt?
Möchten Sie aufhören, Websites für Krypto-Börsen zu besuchen, nur um den Wert der Münze zu sehen?
Wenn Sie mit „Ja“ geantwortet haben, dann sind Sie hier richtig.
Ob Sie ein erfahrener Händler oder ein Krypto-Enthusiast sind, ist es von entscheidender Bedeutung, über die neuesten Preise auf dem Laufenden zu bleiben. Glücklicherweise kann Python dabei helfen, diesen Prozess zu automatisieren und Ihnen so Zeit und Mühe zu sparen.
In diesem Beitrag führe ich Sie durch ein einfaches Python-Skript, das den Wert jeder Kryptowährung an einer bestimmten Börse in Echtzeit verfolgt.
Kryptowährungsmärkte sind rund um die Uhr in Betrieb und die Preise können sich innerhalb von Sekunden ändern. Durch die Automatisierung des Tracking-Prozesses können Sie:
Um mitzumachen, stellen Sie sicher, dass Sie über Folgendes verfügen:
Es gibt drei Dateien:
Der gesamte Code ist in diesem GitHub-Gist zu finden.
Hinweis: Der Code könnte für eine bessere Lesbarkeit und Effizienz umgestaltet werden, aber der primäre Fokus liegt hier auf der Funktionalität.
Hinweis: In diesem Beispiel habe ich „Kraken“ als Krypto-Börse verwendet, wo ich die Preise verfolge.
Wenn der Wert der (zum Beispiel) Polkadot-Münze um 1 EUR steigt, erhalten Sie eine E-Mail-Benachrichtigung wie diese:
Notwendige Bibliotheken importieren.
load_dotenv()
Lädt Variablen wie E-Mail-Anmeldeinformationen (PASSWORT) aus einer .env-Datei zur sicheren Handhabung.
load_dotenv()
Zweck: Sendet eine E-Mail-Benachrichtigung im HTML-Format, wenn Preisschwellen erreicht werden.
Lädt die E-Mail-Vorlage aus einer externen Datei (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()
Zweck: Fügt eine Verzögerung hinzu, um übermäßige Anfragen an die Zielwebsite zu verhindern und so die Erkennung als Bot zu verhindern.
def delay(): time.sleep(2)
Zweck: Lädt Kryptowährungsdetails (z. B. Name, URL, Bilder) aus einer JSON-Datei.
def load_cryptocurrencies(): with open('cryptocurrencies.json', 'r') as f: return json.load(f)
Zweck: Richtet einen Headless-Chrome-Browser zum Scrapen von Kryptowährungspreisen ein.
Headless: Führt Chrome ohne GUI aus.
Benutzerdefinierter Benutzeragent: Imitiert die echte Browsernutzung für eine bessere Umgehung der Bot-Erkennung.
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")
Parst den Preistext und wandelt ihn zum Vergleich und zur Berechnung in einen Float um
price = price_element.text.strip().replace('€', '').replace(',', '.') try: price = float(price) except ValueError: print(f"Error while conversion price for {currency['name']}: {price}") continue
Ruft den zuletzt gespeicherten Preis aus einer Textdatei ab. Wenn es nicht existiert, werden keine vorherigen Daten angenommen.
Berechnet die Preisänderung (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
Legt Schwellenwerte für Preisänderungsbenachrichtigungen fest:
Hinweis: Wenn Sie Münzen mit mehr Ziffern verfolgen möchten, müssen Sie dies hier anpassen.
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)
Speichert den aktuellen Preis in der Textdatei für zukünftige Vergleiche.
with open(previous_price_file, 'w') as file: file.write(str(price))
except Exception as e: print(f"Error occured for {currency['name']}: {e}")
Schließt die Browserinstanz, nachdem alle Aufgaben abgeschlossen sind.
Um dies einmal pro Stunde in die Tat umzusetzen, fügen Sie Folgendes hinzu:
driver.quit()
crontab -e
Wenn Sie dieser Anleitung folgen, können Sie die Preise von Kryptowährungen verfolgen und E-Mail-Benachrichtigungen in Echtzeit erhalten, während Sie schlafen!
Wenn Sie diesen Beitrag hilfreich fanden oder Ideen zur Verbesserung des Skripts haben, können Sie unten gerne einen Kommentar hinterlassen?
Viel Spaß beim Programmieren und erfolgreiches Handeln!
Das obige ist der detaillierte Inhalt vonAutomatisierte Krypto-Preisverfolgung mit GMAIL und Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!