[chap4] 유가분석(celenium)

이재은·2024년 6월 11일

celenium

1. 쓰는 이유

  • 웹 브라우저 원격 조작 도구
  • 자동으로 url 열고 클릭 등이 가능
  • 스크롤, 문자의 입력, 화면 캡처 등

*결과물 확인을 위해 스크롤을 내리고, 뒤로가고, 새로고침 등을 해야할 때
https://www.selenium.dev/documentation/webdriver/drivers/

2. 기본동작

from selenium import webdriver
from selenium.webdriver.common.by import By 

driver = webdriver.Chrome() 
driver.get("http://www.naver.com") 

driver.quit() : 전체 종료

first_content = driver.find_element(By.CSS_SELECTOR, "copy_selector 값")
first_content.click()

그 외 : 화면 최대화, 탭이동, 탭 닫기

3. 화면스크롤, ActionChains

1. 화면 하단, 상단 이동

2. ActionChains 
~~.move_to_element / ~~driver.click

2-1. 이동한 곳에서 클릭
menu = driver.find_element(By.CSS_SELECTOR, ".nav")
hidden_submenu = driver.find_element(By.CSS_SELECTOR, ".nav #submenu1")

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu) #이동만 하려면 이건 없어도 됨.
actions.perform()

2-2. 클릭만 하기 (클릭후 class값이 변동, 변동 전 값으로 클릭)
some_tag = driver.find_element(By.CSS_SELECTOR, ".search")
action = ActionChains(driver) 
action.click(some_tag)
action.perform()

4. 검색어 입력(send_keys)

1. CSS_SELECTOR
1-1. 검색칸 변수 - 그걸 send_keys

keyword = driver.find_element(By.CSS_SELECTOR, "#keyword")
keyword.clear() #지울때
keyword.send_keys("양천구")

1-2. 버튼 누르기
search_btn = driver.find_element(By.CSS_SELECTOR, "#keyword_div > form > button")
search_btn.click()

2. xpath
search_btn = driver.find_element(By.XPATH, 'Xpath복사 내용').click()

5. +beautifulSoup

셀레니움으로 페이지 접속 + 
from bs4 import BeautifulSoup

res = driver.page_source
soup = BeautifulSoup(res, "html.parser")

6. 데이터 얻기

1. 오류 (한번에 url접근이 안된다던지, 팝업창이 나온다던지)

2. time.sleep(초) : 데이터 불러올때 기다려주기

3. 상위내용에서 하위내용 불르오기
3-1. id > tag > vlaue > id치는곳에 해당내용 send_keys
sido_list_raw = driver.find_element(By.CSS_SELECTOR, "#SIDO_NM0") 
sido_list = sido_list_raw.find_elements(By.TAG_NAME, "option")

sido_names  = [] 
for option in sido_list :
    sido_names.append(option.get_attribute("value"))
sido_names
 = [option.get_attribute("value") for option in sido_list ]
 
sido_list_raw.send_keys(sido_names[0]) 

4. 파일저장도 클릭해서 가능!

7. 전체파일정리(glob)

8. 시각화

profile
Dare to be an optimist

0개의 댓글