[kr-dev] 업빗 거래소 '투자내역' 화면의 정보 가져오기 (python)

in #kr7 years ago (edited)

이제 거래소들에서도 옥석이가려지기 시작하는지, 마치 주식시장의 키움증권처럼 거래소도 upbit으로 해쳐모여하는 분위기가 보이네요.

업빗만 api를 제공하고 있지 않음에도 불구하고, 서버의 불안정성때문에 도처히 프로그램을 통해 시스템화된 트레이딩 프로그램을 개발하기가 어려운 이유가 아닐까 싶기도 합니다.

어째든, 저도 이제 업빗 외의 거래소는 이용하고 있지 않기 때문에, 코인거래와 관련된 정보는 업빗에서 주로 확인을 하게 되었습니다.

그런데 한가지 문제가 있다면, 아이폰은 어플이 나와있지 않기 때문에 자동로그인 같은 기능이 없습니다.

그래서 모바일 브라우저로 접속을 해야 하고 또 접속할 때마다 문자로 접속 비밀번호 6자리를 입력해 넣어야 합니다.

게다가 인증문자 조차 다른 사이트들과 달리 15초는 지나야 도착하구요.

종종 잔고나 한번 확인하려고 접속해도 여간 귀찮은게 아니라서 결국에 웹을 긁어서 정보를 얻어오게 되네요.

브라우저에서 html방식으로 화면에 보이는 데이터를 긁어오는 것은 워낙 많은 설명들이 인터넷에 있어서 생략하고, 투자 내역 화면에서 본인이 보유중인 코인들의 각종 정보를 가져오는 소스를 여기에 공유합니다.

비단, 단순히 가격조회를 위해서 읽을 뿐만 아니라, 일단 읽어온 데이터를 활용해서 할 수 있는 것이 많기 때문에 프로그래밍을 트레이딩에 접목해 보고 싶으신 분은 관심있게 봐 주세요.

예를 들어, 수익이 30%가 되면 핸드폰으로 메세지를 송신하거나, 좀더 응용해서 최근 10분간 30% 이상 급등하면 메세지를 송신하는 등 매도 타이밍 잡기도 꽤 괜찮지 않을까 싶습니다.

그 첫번째로 업빗 사이트의 상단메뉴 중 '투자내역'에 보이는 정보를 파싱하는 코드를 올립니다.


soup = BeautifulSoup(browser_data, 'html.parser')
coins = soup.find_all('tr')

for coin in coins:

        코인 = coin.find(class_ = 'tit').strong.text
        단위 = coin.find(class_ = 'tit').i.text
        row = coin.find_all('td')
        보유수량 = float(row[0].text.split()[0].replace(',', ''))
        매수평균가 = int(row[1].text.split()[0].replace(',', ''))
        매수금액 = int(row[2].text.split()[0].replace(',', ''))
        평가금액 = int(row[3].text.split()[0].replace(',', ''))
        col = row[4].find_all('span')
        평가손익율 = float(col[0].text.split()[0])
        평가손익 = int(col[1].text.split()[0].replace(',', ''))

        print(코인, 단위, 보유수량, 매수평균가, 매수금액, 평가금액, 평가손익율, 평가손익)

몇 줄 안되는 코드이지만 파이썬의 웹페이지 파싱용 BeautifulSoup 패키지 이용 방법을 공유차 올립니다.

업빗의 다른 페이지들도 대부분 비슷한 패턴으로 화면이 구성되어 있어서 활용하기 좋으실거에요^^


※ 파이썬을 이용한 투자 포스팅은 #kr-systemtrading에서 보실 수 있습니다.

Sort:  

역시 파이썬으로 뭔가 좀 하려면 뷰티플스프로 해야하는 군요^^ 좋은 정보 감사합니다. 따라해 보겠습니다^^

정규식으로 데이터를 뽑는것보다 사이트 디자인 개편시에 저항력(?)면에서 더 유리한것 같더라구요

저는 lxml 주로 사용하고 있습니다 ㅎㅎ