selenium사용이유
1. Beautiful Soup만으로 해결할 수 없는 것.
- 접근할 웹 주소를 알 수 없을 때
- 자바스크립트를 사용하는 웹페이지의 경우
- 웹 브라우저로 접근하지 않으면 안될때
selenium
- 웹 브라우저를 원격 조작하는 도구
- 자동으로 URL을 열고 클릭 등이 가능
- 스크롤, 문자의 입력, 화면 캡쳐 등등
->selenium은 파이썬 모듈도 설치하고 크롬 드라이버도 받아야 한다.
1) Window의 경우: conda install selenium
2) 자신의 크롬 버전을 알아야함.(크롬 오른쪽 상단(chrome맞춤설정 및 제어)선택)
- 셀레니움 공식문서: Selenium








- 오피넷: https://www.opinet.co.kr/searRgSelect.do
오피넷에서 서울시의 모든 구의 유가정보를 가져와 엑셀파일로 다운로드 받는 과정
!pip install selenium
from selenium import webdriver
#페이지 접근
url = 'https://www.opinet.co.kr/searRgSelect.do'
driver = webdriver.Chrome()
driver.get(url)
# 지역: 시/도
from selenium.webdriver.common.by import By
sido_list_raw = driver.find_element(By.CSS_SELECTOR,'#SIDO_NM0')
print(sido_list_raw.text)
sido_list = sido_list_raw.find_elements(By.TAG_NAME,'option')
sido_list[2].get_attribute('value')
sido_names = []
for option in sido_list:
sido_names.append(option.get_attribute('value'))
sido_names
#위의 문장을 한줄로 표현
sido_names = [option.get_attribute('value') for option in sido_list]
sido_names = sido_names[1:]
sido_names
sido_names[0]
sido_list_raw.send_keys(sido_names[0])
# 구
gu_list_raw = driver.find_element(By.CSS_SELECTOR,'#SIGUNGU_NM0') #부모태그
gu_list = gu_list_raw.find_elements(By.TAG_NAME,'option') #자식태그
gu_names = [option.get_attribute('value') for option in gu_list]
gu_names = gu_names[1:]
len(gu_names)
gu_list_raw.send_keys(gu_names[0])
#엑셀 저장 태그
driver.find_element(By.CSS_SELECTOR,'#templ_list0 > div:nth-child(7) > div > a').click()
element_get_excel = driver.find_element(By.XPATH,'//*[@id="templ_list0"]/div[7]/div/a')
element_get_excel.click()
import time
from tqdm import tqdm_notebook
for gu in tqdm_notebook(gu_names):
element = driver.find_element(By.CSS_SELECTOR,'#SIGUNGU_NM0')
element.send_keys(gu)
time.sleep(2)
element_get_excel = driver.find_element(By.XPATH,'//*[@id="templ_list0"]/div[7]/div/a')
element_get_excel.click()
time.sleep(2)
#마지막에 chrome자원 반환을 위해 꼭 close해주기
driver.close()

