Adakah anda menjejaki nilai mata wang crypto secara manual?
Adakah anda ingin dimaklumkan melalui e-mel apabila nilai mata wang crypto anda naik atau turun mengikut nilai tertentu?
Adakah mahu berhenti pergi ke tapak web pertukaran crypto hanya untuk melihat nilai syiling?
Jika anda menjawab dengan 'Ya', maka, anda berada di tempat yang betul.
Sama ada anda seorang peniaga berpengalaman atau peminat kripto, sentiasa dikemas kini dengan harga terkini adalah penting. Syukurlah, Python boleh membantu mengautomasikan proses ini, menjimatkan masa dan usaha anda.
Dalam siaran ini, saya akan membimbing anda melalui skrip Python mudah yang menjejaki nilai mana-mana mata wang kripto pada pertukaran tertentu dalam masa nyata.
Pasaran mata wang kripto beroperasi 24/7, dan harga boleh berubah dalam beberapa saat. Dengan mengautomasikan proses penjejakan, anda boleh:
Untuk mengikuti, pastikan anda mempunyai perkara berikut:
Terdapat tiga fail:
Keseluruhan kod boleh ditemui dalam intipati GitHub ini.
Nota: Kod boleh difaktorkan semula untuk meningkatkan kebolehbacaan dan kecekapan, tetapi tumpuan utama di sini adalah pada kefungsian.
Nota: Dalam contoh ini saya menggunakan "Kraken" sebagai pertukaran kripto di mana saya mengikuti harga.
Apabila nilai (contohnya) syiling Polkadot meningkat sebanyak 1 EUR, anda menerima pemberitahuan e-mel seperti ini:
Import perpustakaan yang diperlukan.
load_dotenv()
Memuatkan pembolehubah seperti bukti kelayakan e-mel (KATA LALUAN) daripada fail .env untuk pengendalian yang selamat.
load_dotenv()
Tujuan: Menghantar pemberitahuan e-mel berformat HTML apabila ambang harga dipenuhi.
Memuatkan templat e-mel daripada fail luaran (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()
Tujuan: Menambah kelewatan untuk mengelakkan permintaan yang berlebihan ke tapak web sasaran, mengelakkan pengesanan sebagai bot.
def delay(): time.sleep(2)
Tujuan: Memuatkan butiran mata wang kripto (cth., nama, url, imagesrc) daripada fail JSON.
def load_cryptocurrencies(): with open('cryptocurrencies.json', 'r') as f: return json.load(f)
Tujuan: Menyediakan penyemak imbas Chrome tanpa kepala untuk mengikis harga mata wang kripto.
tanpa kepala: Menjalankan Chrome tanpa GUI.
Ejen Pengguna Tersuai: Meniru penggunaan penyemak imbas sebenar untuk pengelakan pengesanan bot yang lebih baik.
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")
Menghuraikan teks harga dan menukarnya menjadi apungan untuk perbandingan dan pengiraan
price = price_element.text.strip().replace('€', '').replace(',', '.') try: price = float(price) except ValueError: print(f"Error while conversion price for {currency['name']}: {price}") continue
Mengambil harga terakhir disimpan daripada fail teks. Jika ia tidak wujud, andaikan tiada data sebelumnya.
Mengira perubahan harga (perubahan_harga).
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
Tetapkan ambang untuk pemberitahuan perubahan harga:
Nota: Jika anda ingin menjejak syiling dengan lebih banyak digit, anda perlu menyesuaikannya di sini.
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)
Menyimpan harga semasa ke fail teks untuk perbandingan pada masa hadapan.
with open(previous_price_file, 'w') as file: file.write(str(price))
except Exception as e: print(f"Error occured for {currency['name']}: {e}")
Menutup tika penyemak imbas selepas semua tugasan selesai.
Untuk membuat ini dalam tindakan sekali setiap jam tambahkan ini:
driver.quit()
crontab -e
Dengan mengikuti panduan ini, anda boleh menjejaki harga mata wang kripto dan menerima pemberitahuan e-mel masa nyata semasa anda tidur!
Jika anda mendapati siaran ini membantu atau mempunyai idea untuk menambah baik skrip, sila tinggalkan ulasan di bawah ?
Selamat pengekodan dan perdagangan yang berjaya!
Atas ialah kandungan terperinci Penjejakan harga crypto automatik menggunakan GMAIL dan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!