본문 바로가기

자동화/Selenium

업비트 코인 시가총액 및 거래대금 목록 자동화로 엑셀에 저장하기

728x90

이번에 자동화로 추출해볼 데이터는 코인 시가총액 및 거래대금 목록입니다.

해당 정보는 업비트에 있는 데이터로 전체 코인을 순위별로 엑셀에 저장하는 코드를 작성하였습니다.

 

시가총액을 보기 위해 탭을 이동하여야 해서 이번에는 By LINK_TEXT 코드로 이동하였으며

가끔 페이지 로딩이 느려서 코드가 실패하는 경우를 방지하기 위해 wait 코드를 추가한 후 전체보기 실행 코드를 작성하였습니다.

 

driver.find_element(By.LINK_TEXT, '시가총액').click()

wait = WebDriverWait(driver, 5)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'LineArticle__MoreLabel')))

driver.find_elements(By.CLASS_NAME, 'LineArticle__MoreLabel')[0].click()

 

class_name이 시가총액과 거래대금은 동일하게 사용하고 있어 element 개수가 코인명의 2배로 확인되었습니다.

그에 맞춰서 반복문 코드를 간단하게 작성하였습니다. 

 

titleList element : 185개

priceList element : 370개

 

엑셀에 저장하기 위해 기존에 많이 사용한 openpyxl 라이브러리를 사용하였고 엑셀 데이터 추가에는 append 코드를 사용하였습니다.

 

titleList = driver.find_elements(By.CLASS_NAME, 'CryptNewsTable__CoinTitle') # 코인명
priceList = driver.find_elements(By.CLASS_NAME, 'CryptNewsTable__Price') # 시가총액 및 거래대금

count = 0
num = 1

for i in titleList:
    ws.append([num, i.text, priceList[count].text, priceList[count+1].text])
    count = count + 2
    num = num + 1

 

전체 코드입니다. 해당 코드 실행시 업비트 내 전체 코인 시가총액 및 거래대금 내역을 확인할 수 있습니다.

 

 

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from openpyxl import Workbook

wb = Workbook()  # Workbook 생성

ws = wb.active  # 시트 활성화
ws.title = 'upbit'  # 시트 타이틀 설정

ws.append(['순위', '코인명', '시가총액', '거래대금(24H)'])

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('https://upbit.com/trends')

driver.find_element(By.LINK_TEXT, '시가총액').click()

wait = WebDriverWait(driver, 5)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'LineArticle__MoreLabel')))

driver.find_elements(By.CLASS_NAME, 'LineArticle__MoreLabel')[0].click()

titleList = driver.find_elements(By.CLASS_NAME, 'CryptNewsTable__CoinTitle') # 코인명
priceList = driver.find_elements(By.CLASS_NAME, 'CryptNewsTable__Price') # 시가총액 및 거래대금

count = 0
num = 1

for i in titleList:
    ws.append([num, i.text, priceList[count].text, priceList[count+1].text])
    count = count + 2
    num = num + 1

wb.save('/Users/user/Desktop/coin.xlsx')

print('EXCEL 저장 성공!')

driver.close()

 

 

이번 자동화는 어려운 부분 없이 손쉽게 데이터를 추출할 수 있었습니다. (element를 찾기 힘들거나 페이지 로딩 때문에 어려울거라 생각했는데 아니네요..)

다음에는 좀 더 어려운 데이터를 추출해보도록 하겠습니다.

 

 

728x90