[Zero-Base]데이터 취업 스쿨 스터디 노트(selenium설치/유가분석-1)

강현정·2024년 5월 17일

zero_base

목록 보기
22/54

🪞selenium설치 개요

selenium사용이유
1. Beautiful Soup만으로 해결할 수 없는 것.

  • 접근할 웹 주소를 알 수 없을 때
  • 자바스크립트를 사용하는 웹페이지의 경우
  • 웹 브라우저로 접근하지 않으면 안될때

selenium

  • 웹 브라우저를 원격 조작하는 도구
  • 자동으로 URL을 열고 클릭 등이 가능
  • 스크롤, 문자의 입력, 화면 캡쳐 등등
    ->selenium은 파이썬 모듈도 설치하고 크롬 드라이버도 받아야 한다.
    1) Window의 경우: conda install selenium
    2) 자신의 크롬 버전을 알아야함.(크롬 오른쪽 상단(chrome맞춤설정 및 제어)선택)
  • 셀레니움 공식문서: Selenium





  • 요소찾기를 활용해서 검색어 입력하는 과정

🛢️오피넷에서 유가정보 가져오기

!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()


0개의 댓글