Info-Tech

Coingecko [코인 거래 사이트]의 정보를 간단한 크롤링 해보기 본문

프로그래밍/파이썬 & 장고

Coingecko [코인 거래 사이트]의 정보를 간단한 크롤링 해보기

개발 로그를 쌓고 싶은 블로거 2018. 10. 25. 21:33
Coingecko에서는 현존하는 거래소들의 가격, 볼륨, 토큰의 정보를 한눈에 알 수 있도록 제공해주는 API가 있습니다.


다양한 API가 있으며, 이번 포스팅에서는 /exchanges/{id} 라는 거래소에 해당하는 모든 market과 coin의 정보들을 가져와보도록 하는 작업을 할 것 입니다.

예를 들어, 빗썸(bithumb)에 어떤 코인과 마켓이 거래가 일어 나고 있는지 확인하고 싶으면


이런식으로 요청을 할 수 있습니다.

결과 값으로는,
{
  "name": "Bithumb",
  "has_trading_incentive": false,
  "trade_volume_24h_btc": 217881.65902249143,
  "tickers": [
    {
      "base": "BTC",
      "target": "KRW",
      "market": {
        "name": "Bithumb",
        "identifier": "bithumb",
        "has_trading_incentive": false
      },
      "last": 7270000,
      "converted_last": {
        "btc": "0.983055238951832548349467409",
        "eth": "31.5819495041140037281319060604920107614038",
        "usd": "6368.25508058864637558434178378618980786695"
      },
      "volume": 77189.10461253,
      "converted_volume": {
        "btc": "75881.15367934867908029805901841080803477",
        "eth": "2437782.404140695791382112126214184529064288455877869614",
        "usd": "491559907.6148326908171663831568945916657368647255428835"
      },
      "timestamp": "2018-10-26T08:24:53+00:00",
      "is_anomaly": false,
      "is_stale": false
    },
    {
      "base": "XMR",
      "target": "KRW",
      "market": {
        "name": "Bithumb",
        "identifier": "bithumb",
        "has_trading_incentive": false
      },
      "last": 118100,
      "converted_last": {
        "btc": "0.015969576852848889127932889",
        "eth": "0.5130437739251532104941372999817571563398",
        "usd": "103.45129642606865707792445361715966212095"
      },
      "volume": 3208923.4780022483,
      "converted_volume": {
        "btc": "51245.150096868054375401675404400917232781356",
        "eth": "1646318.2113913017789664267884154352721276689521903117637192",
        "usd": "331967293.9313817845557129279815428815227836434851189682738"
      },
      "timestamp": "2018-10-26T08:24:53+00:00",
      "is_anomaly": false,
      "is_stale": false
    },
  

— 이런식으로 받아 올 수 있습니다.


먼저 http 관련 라이브러리를 설치하도록 하겠습니다.

pip install httplib2




import http.client
import json

# API호출되는 기본적인 도메인 주소를 정해줍니다.
base_url = ‘api.coingecko.com'

# 헤더를 정해줘야 합니다.
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
}

#해당 주소가 https로 시작함으로, 클라이언트를 HTTPSConnection로 연결 해 줍니다.
conn = http.client.HTTPSConnection(base_url)

# i값은 아직 지정해주지 않았습니다. 자신이 원하는 정보를 선택할 거래소를 넣어주면 됩니다
#이번에는 bithumb을 넣어주도록 하겠습니다.
i = ‘bithumb'
conn.request('GET', '/api/v3/exchanges/{0}'.format(i), headers=headers)
res = conn.getresponse()

#결과값이 dict형태로 되어있음으로 가공하기 쉽게 json으로 받아옵니다.
contents = json.loads(res.read().decode('utf-8))

##이중에서 저는 현재 모든 코인에 대해서 현재가격과, 거래대금을 가져와보도록 하겠습니다.

##coingecko에서는 현재가격을 last, 거래대금은 volume으로 값을 내려주고 있습니다.
##이 값들은 tickers에 리스트 형태로 저장되어 있습니다.

for info in contents[‘tickers’]:
    ## base(코인), 가격, 거래대금 출력
    print( info[‘base’], info[‘last’], info[‘volume’])


이외에도 원하는 정보들을 디비에 저장하거나 is_anomaly와 같은 key값을 잘 활용하면 스캠인지 아닌지 확인도 가능할 듯 합니다.



Comments