> 웹 프론트엔드 > JS 튜토리얼 > GMAIL 및 Python을 사용한 자동화된 암호화폐 가격 추적

GMAIL 및 Python을 사용한 자동화된 암호화폐 가격 추적

DDD
풀어 주다: 2024-12-07 00:02:13
원래의
977명이 탐색했습니다.

암호화폐 가치를 수동으로 추적하시나요?
귀하의 암호화폐 가치가 특정 가치만큼 오르거나 내릴 때 이메일로 알림을 받고 싶으십니까?
단지 코인의 가치를 확인하기 위해 암호화폐 거래소 웹사이트를 방문하고 싶지 않으신가요?

'예'라고 대답했다면 제대로 찾아오셨습니다.

노련한 거래자이든 암호화폐 애호가이든 최신 가격을 지속적으로 업데이트하는 것이 중요합니다. 다행히 Python은 이 프로세스를 자동화하여 시간과 노력을 절약할 수 있습니다.

이 게시물에서는 특정 거래소의 암호화폐 가치를 실시간으로 추적하는 간단한 Python 스크립트를 안내해 드리겠습니다.


암호화폐 가격 추적을 자동화하는 이유는 무엇입니까?

암호화폐 시장은 연중무휴로 운영되며 가격은 몇 초 만에 변경될 수 있습니다. 추적 프로세스를 자동화하면 다음과 같은 이점이 있습니다.

  1. 시장 동향을 실시간으로 받아보세요.
  2. 교환 페이지를 수동으로 새로 고칠 필요가 없습니다.
  3. 특정 범위에서 가격이 변경되면 알림을 받습니다.

요구사항

따라가려면 다음 사항이 있는지 확인하세요.

  1. 시스템에 설치된 Python
  2. Python에 대한 기본 지식 및 라이브러리 설치
  3. 생성된 Google 계정 앱 비밀번호
  4. Google 크롬 설치됨

코드

세 개의 파일이 있습니다:

  1. app.py -> 메인 스크립트
  2. cryptocurrency.json -> 추적할 코인을 정의하는 곳
  3. email_template -> 이메일 디자인을 위한 코드

전체 코드는 이 GitHub 요지에서 찾을 수 있습니다.

참고: 가독성과 효율성 향상을 위해 코드를 리팩터링할 수 있지만 여기서 가장 중요한 초점은 기능입니다.

참고: 이 예에서는 가격을 추적하는 암호화폐 거래소로 "Kraken"을 사용했습니다.


이메일 알림 예:

(예를 들어) Polkadot 코인의 가치가 1 EUR만큼 증가하면 다음과 같은 이메일 알림을 받게 됩니다.

Automated crypto price tracking using GMAIL and Python


코드 설명

필요한 라이브러리를 가져옵니다.

  1. selenium: 웹 브라우저 작업을 자동화합니다(예: 암호화폐 가격 가져오기).
  2. webdriver_manager: ChromeDriver 설치를 자동으로 관리합니다.
  3. fake_headers: 브라우저에 대한 현실적인 사용자 에이전트 헤더를 생성합니다.
  4. smtplib: 이메일 전송 기능을 처리합니다.
  5. dotenv: 환경 변수(예: 이메일 자격 증명)를 로드합니다.
  6. os, time, json: 파일 작업, 지연 및 JSON 구문 분석을 처리합니다.

환경 변수 로드

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)를 로드합니다.

Selenium 옵션 구성

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)
로그인 후 복사
  1. cryptocurrency.json 파일에서 각 암호화폐를 반복합니다.
  2. 가격 데이터를 가져올 URL을 구성합니다.
  3. 셀레늄을 사용하여 대상 웹사이트에서 가격을 긁어냅니다.

가공 스크랩 가격

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
로그인 후 복사

가격 변경 알림에 대한 임계값 설정:

  1. 가격 < 100, ≥1 EUR의 변경 사항을 알립니다.
  2. 그렇지 않으면 ≥5 EUR의 변경 사항을 알립니다.

참고: 더 많은 숫자의 동전을 추적하려면 여기에서 조정해야 합니다.

저장된 가격 업데이트

        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}")
로그인 후 복사

모든 작업이 완료된 후 브라우저 인스턴스를 닫습니다.


이 작업을 수행하는 방법은 무엇입니까?

  1. PC에서 cron 작업 만들기
  2. 서버에서 크론 작업 만들기

이 작업을 한 시간에 한 번씩 실행하려면 다음을 추가하세요.

driver.quit()
로그인 후 복사
crontab -e
로그인 후 복사

결론

이 가이드를 따르면 잠자는 동안 암호화폐 가격을 추적하고 실시간 이메일 알림을 받을 수 있습니다!

이 게시물이 도움이 되었거나 스크립트 개선을 위한 아이디어가 있다면 아래에 댓글을 남겨주세요.

즐거운 코딩과 성공적인 거래!

위 내용은 GMAIL 및 Python을 사용한 자동화된 암호화폐 가격 추적의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿