집을 구매하기 위해 꼭 확인해야 하는 주택담보대출 금리 정보를 최근에 자주 찾아보게 되는데요.
그 중 네이버에서 제공하는 주택담보대출 금리 정보 목록을 자주 사용합니다.
(네이버에서 검색만 하면 확인이 가능하여 편하게 확인이 가능)
자주 보다보니 불편한점이 몇가지 있었는데요.
한 페이지별로 4개 상품만 비교할 수 있고 전체 항목을 보기 위해서는 각 페이지들을 수동으로 확인해야 하기 때문에 전체 상품 데이터를 자동화로 추출하여 한눈에 정리하기 위해 구현해보았습니다.
2023년 2월 현재 기준으로는 13 페이지까지 보이는데 유동적으로 변경될 수 있기 때문에 전체 목록 수를 구하는 코드를 추가하였습니다.
(이후 반복문에서 사용)
total = driver.find_element(By.CLASS_NAME, '_total')
# 금리 목록 확인하기
for k in range(0, int(total.text)):
페이지별로 노출되는 최대 항목이 4개이므로 4번 반복하기 위한 코드를 작성하여 상품명과 금리유형 데이터를 뽑았습니다.
은행명과 상품명 / 금리유형은 각 위치가 맞게 변수를 추가하여 데이터를 뽑았습니다.
for i in range(0, 4):
# 데이터 없는 경우 반복문 빠져나가기
if nameList[listCount].text == '':
break
print("상품명 : " + nameList[listCount].text, productList[listCount].text)
print("금리유형 : " + labelList[labelCount].text, labelList[labelCount+1].text)
labelCount = labelCount + 2
상품별로 최저, 최고 항목만 있는 경우와 평균 항목도 같이 있는 경우 2가지가 있는걸로 확인되어
각각의 경우에 맞게 데이터를 출력할 수 있도록 구분하여 코드를 작성하였습니다.
콘솔에 출력하기 때문에 가독성을 위해 print(end=' ') 코드를 추가하여 줄바꿈이 되지 않도록 처리하였습니다.
printList = ['최저 :', '최고 :', '평균 :']
# 최저, 최고, 평균 구하기
rateList = detailList[listCount].find_elements(By.CLASS_NAME, 'rate_text')
# 평균이 있는 경우 3, 평균이 없는 경우 2
for j in rateList:
print(printList[printCount], j.text, end=' ')
printCount = printCount + 1
전체 코드입니다. 코드 실행시 전체 페이지에 있는 금리 상품 정보를 콘솔에서 한눈에 확인할 수 있습니다.
자동화 공부도 하면서 유용한 정보를 확인할 수 있는 좋은 시간이었습니다.
요즘 금리 인상으로 인해 금리에 대해 관심이 많은데요. 자주 금리 상품들을 확인하면서 원하는 집 구매를 위해 화이팅하시길 바랍니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get('https://search.naver.com/search.naver?where=nexearch&sm=tab_etc&mra=bjNG&qvt=0&query=%EC%A3%BC%ED%83%9D%EB%8B%B4%EB%B3%B4%EB%8C%80%EC%B6%9C%20%EA%B8%88%EB%A6%AC')
total = driver.find_element(By.CLASS_NAME, '_total')
listCount = 0
labelCount = 0
printCount = 0
printList = ['최저 :', '최고 :', '평균 :']
# 금리 목록 확인하기
for k in range(0, int(total.text)):
nameList = driver.find_elements(By.CLASS_NAME, 'bank_name')
productList = driver.find_elements(By.CLASS_NAME, 'product_name')
labelList = driver.find_elements(By.CLASS_NAME, 'label_icon')
detailList = driver.find_elements(By.CLASS_NAME, 'rate_detail')
# 최대 4개까지 이므로 4번 반복
for i in range(0, 4):
# 데이터 없는 경우 반복문 빠져나가기
if nameList[listCount].text == '':
break
print("상품명 : " + nameList[listCount].text, productList[listCount].text)
print("금리유형 : " + labelList[labelCount].text, labelList[labelCount+1].text)
labelCount = labelCount + 2
# 최저, 최고, 평균 구하기
rateList = detailList[listCount].find_elements(By.CLASS_NAME, 'rate_text')
# 평균이 있는 경우 3, 평균이 없는 경우 2
for j in rateList:
print(printList[printCount], j.text, end=' ')
printCount = printCount + 1
printCount = 0
print('\n')
listCount = listCount + 1
if k == int(total.text)-1:
break
else:
driver.find_element(By.CLASS_NAME, 'spnew_bf.cmm_pg_next.on').click()
driver.close()
'자동화 > Selenium' 카테고리의 다른 글
KFC 설문조사 실행파일로 자동화하여 스마트 코드 확인하기 (0) | 2023.02.27 |
---|---|
업비트 코인 시가총액 및 거래대금 목록 자동화로 엑셀에 저장하기 (0) | 2023.02.22 |
selenium element locator 실행 시간 비교해보기 (class_name vs xpath) (0) | 2023.02.11 |
Selenium Python 웹 자동화시 사용하는 스크롤 동작 유형 4가지 (0) | 2023.02.07 |
주요 서점 주간 베스트 20위까지 데이터 엑셀에 자동화로 저장하기 (0) | 2023.01.29 |