코딩일기/Project BTC(Fin)

코인 알림 봇(2)

SmileMaker 2023. 7. 7. 23:15
1. Python IDLE 및 Anaconda 설치

첫번째 설치 파일인 Python IDLE로는 VisualStudio code를 선정했다.

 

다른 언어와의 호환성이 좋고 여러가지 확장팩을 설치하면 코드작성에 용이하기 때문이다.

 

아래를 클릭하면 다운로드 페이지로 이동한다.

 

Visual Studio: 소프트웨어 개발자 및 Teams용 IDE 및 코드 편집기

Visual Studio 개발 도구 및 서비스를 사용하면 모든 개발자가 모든 플랫폼 및 언어로 앱을 쉽게 개발할 수 있습니다. 무료로 어디서나 코드 편집기 또는 IDE를 사용하여 개발하세요.

visualstudio.microsoft.com

Visual Studio code를 설치했으면 다음으로는 Anaconda를 설치해보자

 

Anaconda는 수백개의 Python 패키지를 포함하고 있는 배포판이라고 생각하면된다.

나중에 코드작성할때 모듈을 사용하기 위해 설치해 준다고 생각하면 될것같다.

아래는 Anaconda 메인 페이지이다. 해당 페이지에서 Download를 진행해주면 된다.(크기는 700MB 정도)

그럼 기본적인 프로그래밍 환경을 구축한 셈이다.

 

Free Download | Anaconda

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

2. 해당 페이지의 차트데이터를 가져오기

웹의 내용을 가져오는 행위를 웹 스크래핑이라고 한다.

웹 스크래핑을 하기 위해서는 우선 2가지 모듈을 아래와 같이 불러와야한다.

 

1. import requests
2. import pandas as df

위의 모듈을 사용하기 위해서는 python에서 만든 소프트웨어를 설치해야한다.

python의 터미널창에

위 처럼 입력하고 ENTER키를 누르면 자동으로 설치된다.

 

2번의 pandas 모듈을 설치 할때도 마찬가지로

이렇게 입력 후 ENTER키를 눌러주면 자동으로 설치된다.

 

벌써 어지러워 지는거같지만 조금만 더 해보자......

 

 

이제 모듈을 전부 불러왔으니 어떤 페이지의 정보를 추출하고 그것을 데이터프레임화 시킬건지 알아보도록 하자.

위 사진은 바이낸스 선물거래소에 있는 BTC/USDT심볼의 페이지소스(F12) 사진이다.

크롬이 아니면 작동하지 않을수 있으니 크롬으로 시도해보도록 하자.

 

나는 아래와 같이 오른쪽에 있는 페이지소스에서 추출할 데이터들을 python에 입력할 것이다.

1. Network를 클릭

2. continuousKlines?endTime=........ 클릭

 

1, 2번을 진행하면 Headers라는 탭에 Request URL(3번), Request Method(4번)가 나오는데..

 

URL은 링크를 의미한다.

 

Method는 해당 페이지의 전송 방식(?)을 의미한다고 학교에서 배웠다(드디어 배운게 나왔다!)

따라서 GET방식으로 전송하고 있음을 알 수 있다.(다른 방식으로는 POST방식이 있다.)

 

5번 동그라미인 Status Code는 조금있다가 다룰텐데 코드를 전부 작성한 후에 스크래핑이 제대로 진행되는지 확인할때 사용된다.

Headers 탭의 스크롤을 내려보면 User-Agent가 보일것이다.

 

여기까지 왔으면 알 수 있는 정보가 있다.

1. requests URL

2. requests Method

3. User-Agent

4. status Code

 

이렇게 4가지를 확인하였다.

 

이것을 이용해 코드를 작성해보았다.

1번은 request URL을 url이라는 변수로 저장했다.

2번은 headers라는 변수에 User-Agent를 Key값으로 지정하고 그 옆에있는 뭔지모를 Mozilla/5.0 ....... 을 Value값으로 지정하여 Dictionary 형태로 저장하였다.

3번은 아까 언급했던 전송방식을 적어두었다.(post방식이면 post를 적어야하는듯 하다.)

 

그 아래로는 웹 스크래핑이 잘 되고있는지 확인하기 위해서 res(Status Code)값을 출력하도록 프로그램을 작성했다.

거의 다왔다... 조금만 힘내보자

 

코드 실행!!!

 

 

 

 

 

??????????????????????????????????

 

분명히 아까 pip install pandas로 모듈을 설치했는데 모듈인식이 안된다고 한다...

 

대체 왜 그런지 구글에 검색하다보니 아래 페이지에 도달하게 되었다.

 

Pandas에서 'No Module Named' 오류 해결: 상세 가이드 – Kanaries

판다스(Pandas)에서 'No module named' 오류를 해결하는 방법에 대해 다양한 방법을 탐색하며, 파이썬 데이터 과학 프로젝트를 위한 상세한 설명과 코드 예제를 제공합니다.

docs.kanaries.net

해당 페이지에서 아래와 같은 부분을 확인해볼 수 있었다.

마지막이라는 생각으로 python의 설정창을 구석구석 찾아보았다.

Python PATH 환경 변수를 입력하는 설정창

아무래도 이 빈칸에 아까 설치했던 Anaconda파일의 경로를 입력하면 되는듯 했다.

공란에 Anaconda 설치경로 기입!

입력 후 다시 코드를 실행시켜 보았다!

코드 실행!!!

아까 언급한 Status Code이다.

다행히 정상작동 하는 모습이다.

Status Code가 200 인걸로 보아 웹 스크래핑은 정상적으로 진행되는것같다.

웹 스크래핑이 정상적으로 되는걸 확인 했으니 스크래핑 한 데이터를 정리해주는 코드를 작성해보자

 

최종본

변수 res를 출력하는 코드를 지운뒤에 나머지 코드를 작성한 뒤에 코드를 실행시켜 보았다.

웹 스크래핑을 통해 추출된 데이터들

정상적으로 데이터들이 추출된 모습이다.

 

모든 종목들을 일정 주기로 위와같이 데이터를 추출한 다음 거래량이 급등한 시점에 텔래그램을 통해 알림을 보내는게 최종 목표이다.

 

다음글에서는 보조지표의 데이터 추출 및 거래소에 존재하는 심볼들을 추출하는걸 다뤄볼것이다.

 

 

[python]코인 알림 봇 만들기(3편) : 차트 데이터 가져오는 방법

알림 봇을 만들기 위한 차트데이터 수집 이제 본격적으로 알림 봇을 만드는 과정을 알아보도록 하겠습니다. 우선 알림 조건에는 시세 변동폭, 거래량급증, 어떤 지표의 수치가 몇 이상 등등 차

goldfishman.tistory.com

역시 이분의 글이 정말 많은 도움이 되었다.

 

오늘 코드작성 하면서 느낀점 : 코드를 다 작성하고나니 막상 10줄 정도되는 아주 간단한 코드였지만 작성하기까지 수많은 개념들을 배우고 익히고 사용해봄으로써 python에 한발짝 다가갔다는 생각이 든다.

이왕 이렇게 힘들게 제작했으니 유용하게 사용하는날이 찾아왔으면 좋겠다.