Heim >Web-Frontend >js-Tutorial >Automatisierte Krypto-Preisverfolgung mit GMAIL und Python

Automatisierte Krypto-Preisverfolgung mit GMAIL und Python

DDD
DDDOriginal
2024-12-07 00:02:13974Durchsuche

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.


Warum Krypto-Preisverfolgung automatisieren?

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:

  1. Bleiben Sie informiertüber Marktbewegungen in Echtzeit.
  2. Entfernen Sie die manuelle Aktualisierung von Austauschseiten.
  3. Sie werden benachrichtigt, wenn sich der Preis in einem bestimmten Bereich ändert.

Anforderungen

Um mitzumachen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  1. Python ist auf Ihrem System installiert
  2. Grundkenntnisse in Python und der Installation von Bibliotheken
  3. Generiertes Google-Konto-App-Passwort
  4. Google Chrome installiert

Der Kodex

Es gibt drei Dateien:

  1. app.py -> Hauptskript
  2. cryptocurrencies.json -> Hier legen Sie fest, welche Münzen Sie verfolgen
  3. email_template -> Code für Ihr E-Mail-Design

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.


Beispiel für eine E-Mail-Benachrichtigung:

Wenn der Wert der (zum Beispiel) Polkadot-Münze um 1 EUR steigt, erhalten Sie eine E-Mail-Benachrichtigung wie diese:

Automated crypto price tracking using GMAIL and Python


Erläuterung des Codes

Notwendige Bibliotheken importieren.

  1. Selenium: Automatisiert Webbrowser-Aktionen (z. B. das Abrufen von Kryptowährungspreisen).
  2. webdriver_manager: Verwaltet automatisch ChromeDriver-Installationen.
  3. fake_headers: Erzeugt realistische User-Agent-Header für den Browser.
  4. smtplib: Verwaltet die E-Mail-Versandfunktion.
  5. dotenv: Lädt Umgebungsvariablen (z. B. E-Mail-Anmeldeinformationen).
  6. Betriebssystem, Zeit, JSON: Behandelt Dateivorgänge, Verzögerungen und JSON-Analyse.

Umgebungsvariablen laden

load_dotenv()

Lädt Variablen wie E-Mail-Anmeldeinformationen (PASSWORT) aus einer .env-Datei zur sicheren Handhabung.

E-Mail-Versandfunktion

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).

Hilfsfunktionen

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.

Konfigurieren Sie Selenium-Optionen

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.

Hauptschleife – Preisverfolgung

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)
  1. Durchläuft jede Kryptowährung aus der Datei cryptocurrencies.json.
  2. Konstruiert die URL zum Abrufen von Preisdaten.
  3. Verwendet Selen, um den Preis von der Zielwebsite zu entfernen.

Prozess-Scraping-Preis

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

Preise vergleichen

 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).

Benachrichtigungen auslösen

        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:

  1. Wenn der Preis < 100, benachrichtigt bei Änderungen ≥1 EUR.
  2. Ansonsten erfolgt eine Benachrichtigung bei Änderungen ≥5 EUR.

Hinweis: Wenn Sie Münzen mit mehr Ziffern verfolgen möchten, müssen Sie dies hier anpassen.

Gespeicherten Preis aktualisieren

        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.

Ausnahmebehandlung

with open(previous_price_file, 'w') as file:
            file.write(str(price))

Aufräumen

    except Exception as e:
        print(f"Error occured for {currency['name']}: {e}")

Schließt die Browserinstanz, nachdem alle Aufgaben abgeschlossen sind.


Wie funktioniert das?

  1. Erstellen Sie einen Cron-Job auf Ihrem PC
  2. Cron-Job auf dem Server ausführen

Um dies einmal pro Stunde in die Tat umzusetzen, fügen Sie Folgendes hinzu:

driver.quit()
crontab -e

Abschluss

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn