# 라이브러리 불러오기 from selenium import webdriver # 드라이버 연결 driver = webdriver.Chrome() # 웹사이트 이동 driver.get('http://www.naver.com/') # 브라우저 (드라이버) 종료 # driver.close()
import pyautogui # 화면 자동클릭을 위한 라이브러리 사용 from selenium import webdriver driver = webdriver.Chrome() # 드라이버 연결 # 웹사이트 이동 driver.get('https://www.opinet.co.kr') # 직접 주유소 찾기 화면으로 갈수 없도록 되어 있음 print(pyautogui.position()) pyautogui.moveTo(1776, 893,1) # 절대 좌표로 1초 동안 이동 pyautogui.click()
import pyautogui from selenium import webdriver import time driver = webdriver.Chrome() # 드라이버 연결 # 웹사이트 이동 driver.get('https://www.opinet.co.kr') # 직접 주유소 찾기 화면으로 갈수 없도록 되어 있음 time.sleep(3) # driver.close() print(pyautogui.position()) pyautogui.moveTo(1776, 893,1) # 절대 좌표로 1초 동안 이동 pyautogui.click() time.sleep(1)
driver.find_element_by_id("SIDO_NM0").send_keys('서울특별시') # 1st 리스트 박스를 찾아서 강원도 선택 second_list_raw = driver.find_element_by_id("SIGUNGU_NM0") time.sleep(1) # 첫번째 리스트를 선택하고 대기 필수 second_list = second_list_raw.find_elements_by_tag_name("option") # 2nd 리스트 박스에서 옵션리스트 뽑기
# 리스트 만들기 option_values = [] for option in second_list: option_values.append(option.get_attribute("value")) print(option_values)
option_values.remove('') # 빈 문자 제거 print(option_values)
second_list_raw.send_keys('강북구') # 키 입력을 강북구로 선택 # second_list_raw.send_keys(option_values[2]) # 키 입력을 강북구로 선택 time.sleep(3)
# 엑셀 저장버튼 누르기, 저장확인 file_down = driver.find_element_by_id('glopopd_excel').click() time.sleep(3) # 강서구 다운로드 받아 보기 second_list_raw = driver.find_element_by_id("SIGUNGU_NM0") second_list_raw.send_keys('강서구') # 또는 option_values[3] time.sleep(3) file_down = driver.find_element_by_id('glopopd_excel').click() time.sleep(3)
# 강서구 다운로드 받아 보기 second_list_raw = driver.find_element_by_id("SIGUNGU_NM0") second_list_raw.send_keys('강서구') # 또는 option_values[3] time.sleep(3) file_down = driver.find_element_by_id('glopopd_excel').click() time.sleep(3)
# 자동 반복 다운로드 for cnt in range(len(option_values)): second_list_raw = driver.find_element_by_id("SIGUNGU_NM0") second_list_raw.send_keys(option_values[cnt]) # 키 입력을 차례대로 선택 time.sleep(3) file_down = driver.find_element_by_id('glopopd_excel').click()
import pandas as pd from glob import glob print(glob('지역*.xls')) # '지역'으로 시작되는 모든 xls 파일명을 리스트에 담기 merged_list = glob('지역*.xls') # 새로운 리스트에 저장 list_tabel = [] # 엑셀 내용을 담을 리스트 for file_name in merged_list: tmp = pd.read_excel(file_name, header=2) list_tabel.append(tmp) print(list_tabel) # 25개의 테이블이 저장된 리스트 total_gas_station = pd.concat(list_tabel) # 25개의 테이블을 하나의 리스트구조로 반환 print(total_gas_station)
gas_station = pd.DataFrame({'주유소명': total_gas_station['상호'],\ '경유가격': total_gas_station['경유'],\ '셀프': total_gas_station['셀프여부'],\ '브랜드': total_gas_station['상표'],\ '주소': total_gas_station['주소']}) print(gas_station)
print(gas_station.info()) gas_station = gas_station[gas_station['경유가격'] != '-'] print(gas_station.info())
gas_station['경유가격'] = [float(value) for value in gas_station['경유가격']] print(gas_station.info())
gas_station.reset_index(inplace=True) print(gas_station)
# 한글 출력을 위한 폰트 설정 from matplotlib import font_manager, rc # 한글 시각화 패키지 설치 path = "c:/Windows/Fonts/malgun.ttf" font_name = font_manager.FontProperties(fname=path).get_name() rc('font', family=font_name)
# 한글 출력을 위한 폰트 설정 from matplotlib import font_manager, rc # 한글 시각화 rc('font', family='AppleGothic')
import matplotlib.pyplot as plt gas_station.boxplot(column='경유가격', by='셀프') plt.show()
비셀프는 셀프에 비해 가격 평균과 분산이 크고 outlier가 많이 존재한다. 즉, 비셀프의 경우 주유소가 가지고 있는 환경에 따라 가격이 심하게 차이가 날 수 있다는 추측을 해볼 수 있다.
import seaborn as sns sns.boxplot(x='브랜드', y='경유가격', hue='셀프’, data=gas_station) plt.show()
우리가 익히 알고 있는 주류 주유 브랜드(GS칼텍스, SK에너지 S-OIL 등)의 가격 분포는 알뜰 주유소보다 더큰 가격 분포를 가지고 있으며, outlier또한 많이 존재한다. 그리고 특히 SK에너지가 가장 넓은 분포의 주유 값과 가장 큰 주유값의 주유소를 가지고 있다.
print(gas_station.sort_values(by='경유가격' , ascending=False).head(10))
print(gas_station.sort_values(by='경유가격', ascending=True).head(10))