프로그래밍/Crawling

[Selenium] 버튼 클릭해서 나오는 값 동적 크롤링 하는 방법

seojeon9 2022. 8. 16. 23:18
#필요 패키지 임포트
import selenium
from selenium import webdriver
import pandas as pd
from bs4 import BeautifulSoup
import numpy as np
from selenium.webdriver.common.by import By

url='https://www.opinet.co.kr/user/main/mainView.do'

driver = webdriver.Chrome('./driver/chromedriver')
driver.get(url)

 

1. XPATH를 이용해서 동적 클릭하기

# 싼 주유소 찾기 - 지역별 메뉴 추출
xpath = '//*[@id="header"]/div/ul/li[1]/ul/li[1]/a'
menu = driver.find_element(By.XPATH,xpath)
# 지역(a태그)메뉴 클릭
# 스크립트 동작(js click()) # 자바스크립트 클릭함수
driver.execute_script("arguments[0].click();",menu)

 

2. select tag내의 option 태그 추출

gu_list_raw = driver.find_element(By.XPATH, '//*[@id="SIGUNGU_NM0"]')
gu_list_raw

# select tag 내의 option태그 추출
gu_list = gu_list_raw.find_elements(By.TAG_NAME,'option')

# 구 리스트 추출
# option 태그의 value 속성의 값을 추출
gu_name = [option.get_attribute('value') for option in gu_list]
gu_name.remove('')
gu_name

 

3. 추출한 option값을 이용해 select태그 값 변경

# 시군구명을 추출한 이유
# 해당 시군구명을 객체로 전송해서 정보를 변경(select 태그의 potion 정보 변경)
sigungu_sel = driver.find_element(By.ID,'SIGUNGU_NM0')
sigungu_sel.send_keys(gu_name[11])

# 조회버튼 클릭 : 조회버튼의 xpath 찾아서
xpath = '//*[@id="searRgSelect"]'
sel_btn = driver.find_element(By.XPATH,xpath)
sel_btn.click()

# 엑셀 저장 버튼 클릭
xpath = '//*[@id="glopopd_excel"]'
excel_btn = driver.find_element(By.XPATH,xpath)
excel_btn.click()

driver.close()

 

728x90