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
'자동화 > Selenium' 카테고리의 다른 글
간단한 네이버 메일 자동화로 보내기 (With Selenium, Python) (0) | 2023.03.07 |
---|---|
KFC 설문조사 실행파일로 자동화하여 스마트 코드 확인하기 (0) | 2023.02.27 |
네이버 주택담보대출 금리 정보 목록 자동화로 한번에 확인하기 (0) | 2023.02.13 |
selenium element locator 실행 시간 비교해보기 (class_name vs xpath) (0) | 2023.02.11 |
Selenium Python 웹 자동화시 사용하는 스크롤 동작 유형 4가지 (0) | 2023.02.07 |