파이썬으로 업비트 비트코인 실시간 시세 확인하는 프로그램 만들기(feat. 만들면서 배우는 파이썬과 40개의 작품들)

요즘, 파이썬으로 프로그래밍을 연습해보는 데 매우 재밌습니다.  특히나, 만들면서 배우는 파이썬과 40개의 작품들 책을 통해서 배우고 있습니다.

이전에도 얘기 했지만, 파이썬은 변수의 속성을 지정할 필요가 없는 것이 매우 큰 장점입니다.   웹 언어인 자바스크립트로 변수를 var 로 붙이는데 파이썬은
아예 변수 명 앞에 타입을 붙이지 않아도 자동적으로 타입을 지정해주는 것이 매우 편리합니다. 여러모로,  개발자 편의가 좋은 언어는 맞습니다.

이번 기회에 그래서 파이썬으로 실시간 업비트의 비트코인 시세를 조회할 수 있으면 어떨까 싶어서 코딩을 해보았습니다.
우리가 비트코인 투자하면서 늘 핸드폰을 쳐다봐야 하고, 컴퓨터를 하더라도 네이버에서 비트코인을 검색하던가, 업비트 웹페이지에 들어가야 하지 않습니까?  그럴 필요가 없게 만들어보자구요.

 

파이썬 업비트 비트코인 실시간 시세 코드

import time
import tkinter
import tkinter.font
import requests
from bs4 import BeautifulSoup
import threading
import tkinter
coin_price=0
# 코인 값 가져오기
def get_coin_price():
    global coin_price
    while True:
        url = “https://search.naver.com/search.naver?where=nexearch&sm=tab_etc&mra=bjBK&pkid=734&qvt=0&query=%EC%97%85%EB%B9%84%ED%8A%B8%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8”
        response = requests.get(url)
        soup= BeautifulSoup(response.content, ‘html.parser’)
        coin_price= soup.find(“strong”, class_=”price”).find(“em”).text
        print(coin_price)
        time.sleep(1.0)
        print(coin_price)
#데몬 스레드를 이용하여 메인 프로그램이 종료될 시 함께 종료시킴
t1 = threading.Thread(target=get_coin_price)
t1.daemon= True
t1.start()
#coin_price 가격을 윈도우에 표시
window= tkinter.Tk()
window.title(“비트코인 실시간 가격(업비트 기준)”)
window.geometry(“400×50”)
window.resizable(False,False)
font = tkinter.font.Font(size=30)
label= tkinter.Label(window,text=””, font=font)
label.pack()
# 윈폼에 1초마다 가격을 수정하기
def get_coin_1sec():
    global coin_price
    now_btc_price =str(coin_price)
    label.config(text= now_btc_price + “원”)
    window.after(1000,get_coin_1sec)
get_coin_1sec()
window.mainloop()

웹에서 가격이 있는 태그 찾기

위 코드의 핵심은 네이버에서 업비트 비트코인 시세를 보여주는 페이지를 URL로 저장하고 그것을 태그로 구분시키도록 변환합니다.
response= reponse.get(url) 부터  soup = BeautifulSoup(response.content, ‘html.parser’)    이 코드들이 그렇습니다.
그리고, 이 URL 에서 비트코인 가격이 있는 태그를 찾아야 합니다.   아래의 81,450,000원이 html 태그 어디에 있는지 말입니다.
파이썬으로 업비트 비트코인 실시간 시세 확인하는 프로그램 만들기(feat. 만들면서 배우는 파이썬과 40개의 작품들)
파이썬으로 업비트 비트코인 실시간 시세 확인하는 프로그램 만들기(feat. 만들면서 배우는 파이썬과 40개의 작품들)
크롭 웹 브라우저에 F12키를 누르면 개발자 모드로 볼 수가 있습니다.  그래서 찾아보면 가격은 <em> 태그안에 있습니다.
그런데 <em> 태그만 찾을 수는 없습니다.  왜냐면 em은 글자를 굵게 한다는 표시이기 때문입니다.  따라서,  보통 특정 태그를 찾기 위해서는 id나 클래스값으로
찾습니다.   그래서,  em태그의 부모 태그인 strong 태그가 클래스 “price”를 가지고 있습니다.   그래서 먼저 strong 태그를 찾는 것이 우선이고 그 다음 자식 태그인 em 태그를 찾아야 합니다. 
coin_price= soup.find(“strong”, class_=”price”).find(“em”).text

1초마다 가격을 계속 불러오고, 그것을 기입하기

위의 가격을 불러오는 것을 while True : 를 통해서 계속 영구적으로 불러오게 합니다.   다만,  time.sleep(1.0) 을 통해서 1초 간격으로 쉬었다가 값을 가져오도록 했습니다.  게다가,  그렇게 가져온 가격을 전역변수인 coin_price에 넣어두고 그것을 1초마다 GUI에 업데이트를 하도록 하는 함수가 def get_coin_1sec() 입니다. 

 

 

완성된 모습

파이썬으로 업비트 비트코인 실시간 시세 확인하는 프로그램 만들기(feat. 만들면서 배우는 파이썬과 40개의 작품들)

 

넓지만 높이는 작은 창으로 사이즈 조정은 불가능합니다.  하지만 귀엽게 비트코인의 가격이 실시간으로 나옵니다.  
하지만, 1초 간격으로 가격을 불러오기 때문에 업비트처럼 매우 요란하게 가격이 바뀌지는 않습니다.   그래서 이걸 가지고 틱 매매는 힘들지 싶습니다.
다만,  대략적인 비트코인의 가격은 실시간으로 핸드폰을 보지도 않고 컴퓨터에서 검색하지 않고 알 수가 있다는 것이 큰 의의입니다. 
어쨌든,   파이썬을 배우면서 만든 첫 프로그램이라서 매우 맘에 듭니다.  더군다나 관심있는 분야를 가지고 프로그래밍 하니까 시간 가는줄 모르고 만든 것 같습니다. 만들면서 배우는 파이썬과 40개의 작품들에서는 실제로 업비트의 url 가지고 만들었더군요.  하지만, 저는 그렇게 하지 않고 네이버에서 비트코인 시세를 검색했을 때 나오는 URL을 가지고 한 것이 차이점이라고 할 수 있습니다.
이렇게 해보니,  간단하게 웹 크롤링의 기초를 배웠다고 할 수 있을 거 같습니다.  그래서 의미있는 프로젝트였습니다. 
매우 재밌군요.  앞으로도,  파이썬 프로그래밍을 해보고 간간히 올려보도록 하겠습니다. 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다