업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍
가장 빠르게 익히는 방법은 직접 해보는 것입니다. 이번 포스팅을 통해 REST API를 활용하여 비트코인 가격을 추출하는 파이썬 프로그래밍 방법을 익힐 수 있을 것입니다. 파이썬 프로그래밍 중 특히 함수 만들기와 파이썬 함수의 파라미터를 바꿔가며 데이터를 얻는 방법에 집중해주시기 바랍니다.
글의 순서
하루 단위의 비트코인 시세를 가져오는 업비트 REST API
업비트 REST API를 이용한 파이썬 코드
API를 사용하기 위한 파이썬 패키지 requests
파이썬 프로그래밍 함수 연습 : API를 이용하여 코인 가격 추출
하루 단위의 비트코인 시세를 가져오는 업비트 REST API
일일 코인가격에 대한 시계열 데이터를 가시화하기 위해서 업비트에서 제공하는 파이썬 코드를 이용해보겠습니다. 이 파이썬 코드는 일(Day) 캔들 데이터를 받아오는 REST API를 사용하고 있습니다.
API 실습01
https://api.upbit.com/v1/candles/days?market=KRW-BTC&count=2
API 실습01의 API는 캔들 데이터를 받아오는 API입니다. 캔들 데이터의 기본단위는 일(day)단위이며, 물음표(?) 뒤에 있는 파라미터를 조절해서 원하는 데이터를 얻을 수 있습니다. 참고자료 1의 링크를 타고 가면 ‘Response’와 ‘QUERY PARAMS’가 있습니다. QUERY PARAMS에서 파라미터를 조절하면 API 주소(엔드 포인트) 뒤쪽의 파라미터가 바뀌는 것을 볼 수 있습니다. API 실습01의 주소는 비트코인 원화 마켓(KRW-BTC)에서 캔들 2개를 보여주라는 의미입니다.
※ 주소를 웹 주소(web address) 또는 URL(uniform resource locator)이라고 합니다. 네트워크 상에서 자원이 어디 있는지를 알려주는 규약입니다. 여기서 자원은 우리가 받길 원하는 각종 자료들을 뜻합니다.
API 실습01 결과를 아래에 나타내었습니다.
API 실습01 결과
[{“market”:”KRW-BTC”,”candle_date_time_utc”:”2022-06-18T00:00:00″,”candle_date_time_kst”:”2022-06-18T09:00:00″,”opening_price”:27010000.00000000,”high_price”:27345000.00000000,”low_price”:26954000.00000000,”trade_price”:27017000.00000000,”timestamp”:1655527343448,”candle_acc_trade_price”:35349090363.39155000,”candle_acc_trade_volume”:1305.80173384,”prev_closing_price”:27010000.00000000,”change_price”:7000.00000000,”change_rate”:0.0002591633},{“market”:”KRW-BTC”,”candle_date_time_utc”:”2022-06-17T00:00:00″,”candle_date_time_kst”:”2022-06-17T09:00:00″,”opening_price”:26900000.00000000,”high_price”:27920000.00000000,”low_price”:26573000.00000000,”trade_price”:27010000.00000000,”timestamp”:1655510399478,”candle_acc_trade_price”:224342676396.38415000,”candle_acc_trade_volume”:8254.74720985,”prev_closing_price”:26898000.00000000,”change_price”:112000.00000000,”change_rate”:0.0041638784}]
업비트 REST API를 이용한 파이썬 코드
참고자료 1에는 코인가격을 가져올 수 있는 파이썬 코드가 있습니다. 그 코드의 API를 ‘API 실습01’로 바꿔서 업비트 API 활용01에 나타내었습니다. 이 코드를 실행시키면 ‘API 실습01 결과’와 똑같은 결과를 출력합니다. 파이썬 코드 실행 환경은 ‘파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit’이라는 포스팅을 참고하시기 바랍니다.
1 2 3 4 5 6 |
import requests url = "https://api.upbit.com/v1/candles/days?market=KRW-BTC&count=2" headers = {"Accept": "application/json"} response = requests.get(url, headers=headers) print(response.text) |
API를 사용하기 위한 파이썬 패키지 requests
업비트 API 활용01 코드의 첫줄에서 requests라는 파이썬 패키지를 불러옵니다. 이 파이썬 패키지는 API를 사용하기 위한 패키지입니다. 파이썬 패키지를 사용하려면 설치되어 있어야 합니다.
(1) replit에서 파이썬 패키지를 설치하는 방법
아래 그림과 같이 replit 환경에서 패키지를 선택하고, 검색창에 requests 입력하면 requests 라는 패키지를 찾을 수 있습니다. requests를 선택하고 설치(install) 하면, 오른쪽 콘솔 창에서 진행현황과 설치 완료 상태를 확인할 수 있습니다.
(2) replit 이외의 다른 파이썬 코딩환경에서 패키지 설치하는 방법
$python -m pip install requests
또는 pip install requests
파이썬 프로그래밍 함수 연습 : API를 이용하여 코인 가격 추출
업비트 API 활용01 코드를 기반으로 함수를 만들어 놓으면, 코드를 파악하기가 쉽고, 활용하기 편합니다. 함수를 만들 때는 어떤 값을 돌려받을지, 어떤 인자(=파라미터)를 넘겨줄지를 정하는 것이 중요합니다.
(1) REST API를 포함하는 함수 만들기 연습
일단 원래 코드를 크게 수정하지 않으면서, 함수에 ‘업비트 API 활용01’의 코드를 넣어보면 아래의 코드가 됩니다. get_coin_price라는 함수는 받는 인자 없이 response를 돌려줍니다. 변수 response에는 업비트 API를 이용해서 받은 데이터가 담겨있습니다. ‘API 실습01 결과’와 같은 출력값을 예상했지만, 의외로 출력되는 값은 <Response [200]>입니다. 여기서 200이라는 값은 데이터가 들어있다는 것을 의미합니다.
1 2 3 4 5 6 7 8 9 |
import requests import json def get_coin_price(): response = requests.get("https://api.upbit.com/v1/candles/days?market=KRW-BTC&count=2") return response price = get_coin_price() print(price) |
(2) JSON을 이용한 데이터 확인
업비트 API 활용02라는 실습코드의 실행결과는 <Response [200]>이었습니다. API로 데이터를 받아오긴 했으나, 우리가 원하는 형태로 바꾸기 위해서는 추가의 가공이 필요합니다. 일단 우리 눈에 익숙한 형태의 데이터로 바꿔주는 JSON을 이용해서 데이터를 확인하는 것이 우선입니다. 여기서 JSON은 JavaScript Object Notation의 줄임말로 사람이나 기계가 읽고 쓰기 쉬운 데이터 교환 형식입니다. JSON의 사용법은 무척 간단합니다. 아래의 코드에서처럼 변환하고자 하는 변수에 json을 붙여주기만 하면 됩니다.
업비트 API 활용02라는 실습코드에서 사용했던 response라는 변수를 raw_resp로 변경하고, 이 raw_resp를 JSON 형식으로 바꾸는 것입니다. response = raw_resp.json()에서처럼 raw_resp.json 이라고 쓰면 raw_resp는 JSON 형식으로 바뀝니다. 업비트 API 활용03 코드를 실행하면 위의 ‘API 실습01 결과’와 똑같은 결과를 출력합니다.
1 2 3 4 5 6 7 8 9 10 |
import requests import json def get_coin_price(): raw_resp = requests.get("https://api.upbit.com/v1/candles/days?market=KRW-BTC&count=2") response = raw_resp.json() return response price = get_coin_price() print(price) |
(3) 함수에 파라미터 넘겨주기
이제는 get_coin_price라는 함수에 인자를 넘겨줘서 비트코인 뿐만 아니라 다른 암호화폐의 가격도 가져올 수 있고, 20일치, 200일치 데이터도 가져올 수 있게 해보겠습니다. 업비트 API 활용04 코드에서는 get_coin_price를 부를 때 KRW-BTC를 따옴표와 함께 문자열로 넘겨주고, 2를 숫자로 넘겨줍니다. KRW-BTC 대신 KRW-ETH를 넘겨주면 이더리움 가격을 받아올 수 있고, 2대신 20일을 넣으면 20일치 데이터가 출력되는 것을 확인하실 수 있습니다.
이렇게 인자를 넘겨주고, 함수 내에서 인자를 받는 것은 ‘파이썬 프로그래밍 시작 (3) 파이썬 함수 실습’이라는 포스팅의 ‘실습코드 : 함수09’에서 참고해보시기 바랍니다.
업비트 API 활용04의 get_coin_price() 함수는 파라미터를 받아와야 하므로 API의 주소가 다소 복잡해졌습니다. 그래서 url이라는 변수를 추가한 후, url에 API 주소를 담아두고, 이 주소가 제대로 만들어졌는지를 확인하기 위해 print(url)을 추가하였습니다. url에 담기는 API 주소에서 파라미터로 받아와야 하는 부분은 %s, %d로 표시되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
import requests import json def get_coin_price(ticker,n_candle): url = ("https://api.upbit.com/v1/candles/days?market=%s&count=%d" %(ticker, n_candle)) print(url) raw_resp = requests.get(url) response = raw_resp.json() return response price = get_coin_price("KRW-BTC",2) print(price) |
마치며 …
자동으로 데이터를 받아오는 코드를 만들기 위해 API를 살펴보는 중입니다. 업비트(UPbit)는 업비트의 API를 활용할 수 있도록 다양한 프로그래밍 언어로 샘플 코드를 제공하고 있습니다. 이번 포스팅에서는 이들 프로그래밍 언어 중 파이썬을 활용하는 방법을 정리하였습니다. API로 가격을 받아오는 부분을 함수로 구현하는 방법과, 파이썬 함수의 파라미터를 바꿔가며 데이터를 얻는 방법이 이 포스팅에서 가장 중요한 내용입니다.
이 포스팅에서 살펴본 내용을 요약해보겠습니다.
▶ 업비트에서 제공하는 파이썬 코드 내려받기
▶ 파이썬 코드 내 API의 주소(엔드포인트)와 파라미터 바꾸기
▶ 파이썬 함수 만들기
▶ 파이썬 함수에 인자 추가하기
API의 엔드포인트와 파라미터를 바꿔가면서 원하는 데이터를 받아 보시기 바랍니다.
함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 파이썬 프로그래밍 시작 (3) 파이썬 함수 실습
3. 파이썬 프로그래밍 시작 (14) 패키지
4. 시계열 데이터 가시화 (2) 보고서용 파이썬 그래프 만들기
5. 파이썬 프로그래밍 time 이해 : timestamp, UTC, KST
6. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
7. 알아두면 좋을 컴퓨터 작동원리. 폰 노이만 아키텍처
참고자료
[1] UPbit(2020),일(Day) 캔들
[2] JSON 개요