جمع‌آوری قیمت ارز دیجیتال با پایتون

پروژه‌های وب اسکرپینگ

آموزش ۴ دقیقه مطالعه
فهرست مطالب
این مطلب از سایت tool.hamidvalad.ir گرفته شده است

مقدمه

با رشد بازار ارزهای دیجیتال، دسترسی سریع به قیمت‌ها و داده‌های لحظه‌ای برای تحلیل و تصمیم‌گیری اهمیت بالایی پیدا کرده است. پایتون با داشتن کتابخانه‌های قدرتمند و ساده، امکان جمع‌آوری و پردازش داده‌های ارز دیجیتال را به راحتی فراهم می‌کند.

در این مقاله یاد می‌گیریم چطور با چند خط کد، قیمت ارزهای محبوب مثل بیت‌کوین، اتریوم و دوج‌کوین را دریافت و ذخیره کنیم. همچنین با مثال‌های عملی نشان می‌دهیم که چگونه می‌توان داده‌ها را در فایل CSV ذخیره و برای تحلیل بعدی آماده کرد.

کتابخانه‌های مورد نیاز

برای این پروژه به کتابخانه‌های زیر نیاز داریم:

1. requests: برای دریافت داده‌ها از وب و APIها

2. BeautifulSoup: برای پردازش و استخراج داده‌ها از HTML

3. csv: برای ذخیره داده‌ها در فایل CSV

این کتابخانه‌ها پایه‌ای هستند و در بیشتر پروژه‌های تحلیل داده کاربرد دارند.

کد کامل جمع‌آوری قیمت ارز دیجیتال

# Import کتابخانه‌های مورد نیاز
import requests
from bs4 import BeautifulSoup
import csv
import time

# تعریف لیست ارزها
coins = ["bitcoin", "ethereum", "dogecoin"]

# تابع دریافت قیمت از API CoinGecko
def get_price(coin):
    url = f"https://api.coingecko.com/api/v3/simple/price?ids={coin}&vs_currencies=usd"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        return data[coin]["usd"]
    else:
        return None

# ایجاد فایل CSV و ذخیره قیمت‌ها
with open("crypto_prices.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["Coin", "Price (USD)"])
    
    # حلقه برای دریافت قیمت هر ارز
    for coin in coins:
        price = get_price(coin)
        if price:
            print(f"{coin.capitalize()}: ${price}")
            writer.writerow([coin, price])
        else:
            print(f"Error fetching {coin} price")

توضیح کد

1. ابتدا کتابخانه‌های مورد نیاز وارد می‌شوند.
2. یک لیست از ارزهای دیجیتال که می‌خواهیم قیمت‌شان را دریافت کنیم، تعریف شده است.
3. تابع get_price برای دریافت قیمت از API CoinGecko ایجاد شده است.
4. فایل CSV برای ذخیره اطلاعات ایجاد می‌شود.
5. در حلقه for قیمت هر ارز دریافت و در فایل CSV ذخیره می‌شود.

با اجرای این کد، خروجی مشابه زیر تولید می‌شود:

Bitcoin: $56000
Ethereum: $4300
Dogecoin: $0.25

و فایل crypto_prices.csv شامل:

Coin,Price (USD)
bitcoin,56000
ethereum,4300
dogecoin,0.25

کتابخانه requests

کتابخانه requests یکی از محبوب‌ترین ابزارها برای ارسال درخواست HTTP در پایتون است.
با استفاده از requests.get() می‌توان به راحتی داده‌ها را از وب یا API دریافت کرد.

مزایای requests:
• ساده و خوانا
• قابلیت مدیریت خطا و وضعیت HTTP
• امکان ارسال Header و پارامترهای پیشرفته

مثال:

import requests

url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
response = requests.get(url)
if response.status_code == 200:
    data = response.json()
    print(data)

در این مثال، درخواست به API ارسال شده و پاسخ JSON دریافت می‌شود.
با بررسی status_code می‌توان اطمینان حاصل کرد که پاسخ موفقیت‌آمیز بوده است.

کتابخانه BeautifulSoup

BeautifulSoup یک ابزار قدرتمند برای پردازش و استخراج داده‌ها از HTML و XML است.این کتابخانه به ویژه زمانی کاربرد دارد که داده‌ها به صورت صفحه وب ارائه شده‌اند و API رسمی وجود ندارد.

مزایا:
• استخراج سریع داده از HTML
• امکان جستجوی تگ‌ها و کلاس‌ها
• پشتیبانی از پردازش پیچیده داده‌ها

مثال ساده برای استخراج قیمت از سایت:

from bs4 import BeautifulSoup
import requests

url = "https://www.coingecko.com/en/coins/bitcoin"
html = requests.get(url).text
soup = BeautifulSoup(html, "html.parser")
price_tag = soup.find("span", class_="no-wrap")
print(price_tag.text)

با این روش می‌توانید هر المان دلخواه از سایت را استخراج کنید.
نکته مهم: حتماً قوانین سایت را رعایت کنید و درخواست‌ها را بیش از حد ارسال نکنید.

کتابخانه csv

کتابخانه داخلی csv برای ذخیره و مدیریت داده‌ها در قالب فایل‌های CSV بسیار کاربردی است.
این فایل‌ها امکان انتقال داده به اکسل یا نرم‌افزارهای تحلیل داده را فراهم می‌کنند.

مزایا:
• ذخیره‌سازی داده به صورت جدول
• خواندن و نوشتن آسان
• پشتیبانی از فایل‌های بزرگ

مثال نوشتن CSV:

import csv

with open("crypto_prices.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["Coin", "Price"])
    writer.writerow(["Bitcoin", 56000])

با این کار فایل CSV ایجاد می‌شود و داده‌ها به راحتی ذخیره می‌شوند.

نکات حرفه‌ای و پیشرفته

• می‌توانید حلقه‌ای ایجاد کنید که قیمت‌ها را هر چند ثانیه یک‌بار بروزرسانی کند و داده‌ها را ذخیره کند.
• داده‌های جمع‌آوری شده می‌توانند برای رسم نمودار با matplotlib یا تحلیل با pandas استفاده شوند.
• استفاده از APIهای معتبر مثل CoinGecko و Binance، سریع‌تر و قابل اعتمادتر است نسبت به استخراج HTML سایت‌ها.
• می‌توانید از قابلیت try/except برای مدیریت خطاها و جلوگیری از توقف برنامه استفاده کنید.

نتیجه‌گیری کلی

جمع‌آوری قیمت ارز دیجیتال با پایتون نه تنها ساده است، بلکه ابزاری قدرتمند برای تحلیل و تصمیم‌گیری حرفه‌ای فراهم می‌کند.

با استفاده از کتابخانه‌های requests، BeautifulSoup و csv می‌توان داده‌ها را به راحتی دریافت، پردازش و ذخیره کرد.

این روش پایه‌ای برای تحلیل داده، رسم نمودار، ساخت داشبورد و حتی الگوریتم‌های معامله‌گری خودکار است.

با یادگیری این تکنیک‌ها، شما می‌توانید داده‌های بازار ارز دیجیتال را به صورت لحظه‌ای جمع‌آوری کرده و از آن‌ها برای تصمیم‌های دقیق و حرفه‌ای استفاده کنید.