* 아래의 코드를 실행했다는 가정 하의 명령어들이다.
from selenium import webdriver
driver = webdriver.Chrome()
기본 동작
1. driver.quit()는 selenium의 webdriver세션을 종료하는 명령어이다. 메모리 누수를 방지하고 자원을 관리하기 위해 webdriver를 사용한 자동화 프로세스가 끝난 이후에 반드시 실행해줘야 한다.
2. driver.maximize_window()는 창을 최대화한다.
3. driver.minimize_window()는 창을 최소화한다.
4. driver.set_window_size()는 창의 크기를 설정한다. (예시: driver.set_window_size(600, 600))
* selenium을 통해 데이터를 받아오려고 할 때, selenium은 화면에 '보이는' 영역 안에서 데이터를 찾아 가져오려고 한다. 따라서 항상 창을 최대한 크게 유지하는 편이 좋다.
5. driver.refresh()는 새로고침 기능을 실행한다.
6. driver.back()는 뒤로가기 명령을 실행한다.
7. driver.forward()는 앞으로 가기 명령을 실행한다.
8. 클릭은 먼저 from selenium.webdriver.common.by import By를 한 후 find_element(By.선택자(대문자), '해당 요소의 주소/id')를 통해 해당 요소를 선택한 후 .click()함수를 실행해야 한다. 간단한 예시는 다음과 같다.
xpath_search = '//*[@id="sform"]/fieldset/button'
some_tag = driver.find_element(By.XPATH, xpath_search).click()
9. driver.execute_script('window.open('https://www.naver.com')')은 새로운 탭을 생성한다.
10. driver.switch_to_window(driver.window_handles[1])은 1번째 탭으로 이동한다.
11. driver.close()는 driver에서 가리키고 있는 탭을 닫는다. driver.quit()은 모든 프로세스를 종료한다.
화면 스크롤
1. driver.execute_script('return document.body.scrollHeight')은 최대 스크롤가능한 높이를 표시한다.
2. driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')은 가장 아래 위치까지 스크롤한다.
3. driver.save_screenshot('./') * 매개변수를 ./라고 하거나 생략하면 현재위치에 저장, 다른 이름으로 저장 가능함, 저장하면 True 반환
4. driver.execute_script('window.scrollTo(0, 0)')은 맨 위로 스크롤한다.
5. 특정 태그 지점까지 스크롤하기 위해서는 ActionChains를 응용해야 한다. 아래와 같은 방식으로 코드를 입력해야 한다.
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
some_tag = driver.find_element(By.XPATH, '//*[@id="newsstand"]/div[3]/div[1]/ul/li[1]/div/a')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
검색어 입력
검색어 입력의 예시 코드는 다음과 같다.
# 검색창에 키워드 보내기
some_tag = driver.find_element(By.XPATH, '//*[@id="query"]')
some_tag.clear() # 검색창 초기화
some_tag.send_keys('data science')
# 검색창 클릭하기
xpath_search = '//*[@id="sform"]/fieldset/button'
some_tag = driver.find_element(By.XPATH, xpath_search).click()
* xpath의 정규표현식에 대하여
' // ' : 최상위 태그
' * ' : 자손 태그(상위 태그로부터 2단계 이상 떨어진 관계)
' / ' : 자식 태그(상위 태그 바로 아래에 있는 관계)
' div[1] ' : div중에서 2번째 태그
'데이터분석' 카테고리의 다른 글
| # Python 함수의 기초(docstring 만들기, **kwargs 사용, import하기) (1) | 2024.04.20 |
|---|---|
| # 참고. Folium의 메소드들에 대해서 (2) | 2024.03.29 |
| # 중급 03. List형 데이터 다루기 (6) | 2024.03.23 |
| # 중급 02. seaborn dataset(iris, anscombe) (2) | 2024.03.23 |
| # 중급 01. iterrows(), seaborn(기초, dataset(flights, tips) 활용) (4) | 2024.03.23 |