알림 봇을 만들기 위한 차트데이터 수집
이제 본격적으로 알림 봇을 만드는 과정을 알아보도록 하겠습니다. 우선 알림 조건에는 시세 변동폭, 거래량급증, 어떤 지표의 수치가 몇 이상 등등 차트의 데이터가 필요합니다. 이 데이터를 가져와서 조건식으로 만들어야 알림이 작동되겠지요. 3편은 그런 차트의 데이터를 가오는 웹스크래핑을 알아보도록 하겠습니다.
한 번쯤 검색해 보신 분들도 있을 것이라고 생각합니다. 저도 그랬었고요. 검색하면 뭐가 나오시나요? 아마 CCXT, BeautifulSoup, Selenium을 사용하는 나올 것입니다. 또 클릭해서 들어가 보면 영화순위, 주가의 PER 데이터만 가져오고 차트 같은 그래프의 정보를 가져오는 예시는 없더라고요. 그래서 저는 requests 모듈과 pandas 모듈로 차트데이터 웹스크래핑을 진행해 보도록 하겠습니다.
1. 우선 두 모듈을 들여옵니다
import requests
import pandas as pd
(1) 리퀘스트는 웹스크래핑한 데이터를 라이브러리 역할을 하기 위해 임포트 해줍니다.
(2) 판다스는 그 차트데이터를 데이터프레임(엑셀 같은 행과 열의 데이터)으로 저장하기 위해 임포트 해줍니다. 뒤에 as pd는 pandas의 약칭을 pd로 한다는 것입니다.
2. 구글크롬으로 바이낸스의 원하는 코인차트를 들어갑니다. 저는 BTC/USDT로 들어갔습니다.
바이낸스 가입 절차 (수수료 할인 및 주의 사항)
바이낸스 신규 가입 레퍼럴(추천인) 코드 - 수수료 할인 혜택 주의사항(가짜사이트, 거짓정보) 가입 절차 레퍼럴(추천인) 코드 - 수수료 할인 혜택 바이낸스에는 추천인 제도가 있으며 신규 가입
goldfishman.tistory.com
크롬이 없으신 분들은 아래 링크에서 다운로드하시면 됩니다.
(1) 구글크롬 다운
Chrome 웹브라우저
더욱 스마트해진 Google로 더 간편하고 안전하고 빠르게.
www.google.com
(2) 바이낸스 BTC/USDT 현물 주소
19656.94 | BTCUSDT | Binance Spot
www.binance.com
(3) 크롬 개발자 도구
개발자도구의 단축키는 F12입니다.
(4) Network - Fetch/XHR - Klines - Headers
여기에서 (a) Request URL (b) Request Method (c) user-agent를 추출합니다. 우클릭하시면 값을 복사하실 수 있습니다.
3. 다시 파이참으로 돌아와서 (a), (b), (c)의 정보를 다음과 같이 적어줍니다.
url = "https://www.binance.com/api/v3/uiKlines?limit=1000&symbol=BTCUSDT&interval=1m"
headers = {"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}
res = requests.get(url, headers=headers)
res.raise_for_status()
(1) Request URL의 값을 url이라는 변수로 지정합니다.
(2) user-agent의 값을 딕셔너리 형태로 정리합니다.
(3) Request Method가 GET함수이므로 get함수를 써줍니다. requests모듈 안에 있는 함수이므로 requests.get(url, headers = headers) 주어진 공식대로 입력합니다.
(4) 웹스크래핑이 잘 되었는지 확인해 주는 한 줄입니다. 습관처럼 마지막에 한 줄 적으시면 됩니다.
4. print(res)를 실행하여 잘 응답하였는지 확인하실 수 있습니다.
print(res)
<Response [200]>
response [200] 이 뜨면 성공적으로 웹스크래핑을 했다고 보시면 됩니다.
5. 응답받은 데이터를 정리해 줍니다.
value = res.json()
df = pd.DataFrame(value)
(1) 내용물을 json 함수를 이용하여 딕셔너리 형태로 나타내줍니다.
(2) 딕셔너리로 정리된 정보를 판다스 모듈의 DataFrame함수로 행과 열의 데이터로 정리해 줍니다.
pandas의 DataFrame 쉽게 말해서 엑셀과 비슷한 형태로 만들어준다고 생각하시면 됩니다.
6. 데이터프레임으로 정리된 데이터를 확인해 봅니다.
import requests
import pandas as pd
url = "https://www.binance.com/api/v3/uiKlines?limit=1000&symbol=BTCUSDT&interval=1m"
headers = {"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}
res = requests.get(url, headers=headers)
res.raise_for_status()
value = res.json()
df = pd.DataFrame(value)
print(df)
0 1 ... 10 11
0 1678404060000 20327.83000000 ... 1469536.77910470 0
1 1678404120000 20330.17000000 ... 1691490.50073060 0
2 1678404180000 20332.59000000 ... 1844441.06481990 0
3 1678404240000 20352.18000000 ... 1387392.80389830 0
4 1678404300000 20351.51000000 ... 1488654.16072540 0
.. ... ... ... ... ..
995 1678463760000 20018.95000000 ... 6381917.86480350 0
996 1678463820000 20019.20000000 ... 5004063.16401280 0
997 1678463880000 19998.68000000 ... 4133552.33306360 0
998 1678463940000 20011.49000000 ... 4483719.54445910 0
999 1678464000000 20004.96000000 ... 4716818.45703060 0
[1000 rows x 12 columns]
1000개의 행과 12개의 열로 깔끔하게 정리되었습니다.
행은 기본적으로 1000번째 행이 현재의 캔들 정보이고 1000개의 행만을 제한적으로 받을 수 있네요.
열은 차례대로 시간, 시가, 고가, 저가, 종가, 거래량, 거래대금 등의 정보를 가지고 있습니다. ( 6,8,9,10,11 열의 정보는 모르겠습니다. 아시는 분 계시면 댓글로 달아주시기 바랍니다.)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
시간 | 시가 | 고가 | 저가 | 종가 | 거래량 | ? | 거래대금 | ? | ? | ? | ? |
이로써 차트의 데이터를 데이터프레임 형태로 웹스크래핑을 하였습니다.
물론 CCXT모듈을 사용하여 fetch_ohlcv처럼 남이 만든 함수를 호출하면 더 쉬울 수는 있지만 그 모듈에 갇혀 제한적인 코딩만을 할 수도 있습니다. 그럴 때 직접 할 수 있는 테크닉이 있으면 응용력을 발휘할 수 있어 알아두면 좋을 것이라 생각합니다.
'기술 > 코인 알림 봇 만들기 (기초)' 카테고리의 다른 글
[python]코인 알림 봇 만들기(5편) : ticker(심벌) 가져오기 (437) | 2023.03.28 |
---|---|
[python]코인 알림 봇 만들기(4편) : 비트코인 선물 지표 데이터 추출 (438) | 2023.03.12 |
코인 알림 봇 만들기(2편) : 파이참 설치 (428) | 2023.03.04 |
코인 알림 봇 만들기(1편) : 파이썬 (아나콘다) 설치 (421) | 2023.03.02 |
코인 알림 봇 만들기(0편) : 코인 알림 봇 만드는 이유 (426) | 2023.03.01 |
댓글