python/python_selenium
Selenium 기본
몽자비루
2023. 4. 25. 08:43
# 직접 웹브라우저를 컨트롤하여 webscraping
# 현재 버전에 맞는 chrome driver.exe파일 다운로드해야됨
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 현재 폴더에 있음 = ./, 적지 않아도 된다.
browser = webdriver.Chrome() #"./chromedriver.exe"
browser.get("<https://naver.com>")
# selenium 문법이 변경되었다.
# find_element_by_class_name 은 하단과 같이 명시되어야 함.
# 꼭 from selenium.webdriver.common.by import By 를 통해 by import
elem = browser.find_element(By.CLASS_NAME, "ico_naver")
elem.click() # 클릭
browser.back() # 뒤로가기
browser.forward() # 앞으로가기
browser.refresh() # 새로고침
elem.send_keys("나도코딩") # 텍스트 전송
# 아래를 위해서는 Keys를 import 해야한다.
elem.send_keys(Keys.ENTER) # ENTER 전송
# tag_name이 "a"인 element를 가져온다. (가장 첫번째)
elem = browser.find_element(By.TAG_NAME, "a") # TAG_NAME으로 찾아보기
# tag_name이 "a"인 element를 모두 가져온다.
elem = browser.find_elements(By.TAG_NAME, "a")
browser.get("<http://daum.net>")
elem = browser.find_element(By.NAME , "q") # NAME으로 찾아보기
elem.send_keys("나도코딩")
elem.send_keys(Keys.ENTER)
browser.back()
elem.send_keys("나도코딩")
elem = browser.find_element(By.XPATH , '//*[@id="daumSearch"]\\
/fieldset/div/div/button[3]') # XPATH로 찾아보기
elem.click()
# 현재 있는 탭만 닫음
browser.close()
# 브라우저 전체를 종료
browser.quit()
- from selenium.webdriver.common.by import By : find_element를 위한 패키지
- from selenium.webdriver.common.keys import Keys : 키보드 전송을 위한 패키지
- browser = webdriver.Chrome() 를 통해 반드시 `Chromedriver.exe`를 가져와야 한다.
- browser.작업 (back, refresh, forward) 등을 통해 브라우저 조작 가능.
- find_element(By , value) 를 통해서 element를 추출할 수 있다.
※ find_element_by_By~ 는 selenium업그레이드로 인해서 더이상 사용 X
ㄴ ’WebDriver' object has no attribute 'find_element_by_class_name’ 얼럿이 나온다.- By.ID : 태그의 id값으로 추출
- By.NAME : 태그의 name값으로 추출
- By.XPATH : 태그의 경로로 추출
- By.LINK_TEXT : 링크 텍스트값으로 추출
- By.PARTIAL_LINK_TEXT : 링크 텍스트의 자식 텍스트 값을 추출
- By.TAG_NAME : 태그 이름으로 추출
- By.CLASS_NAME : 태그의 클래스명으로 추출
- By.CSS_SELECTOR : css선택자로 추출
- element.작업(click, send_keys) 등을 통해 element에 작업 전송 가능
- browser.close는 현재 있는 탭만 종료하고, browser.quit()는 브라우저 전체를 종료