ch11 Selenium 소개 및 시작
💡 이번 차시의 학습목표
✔ 크롤링 개념
✔ Selenium 소개 및 사용방법
✔ Selenium 시작하기
01. 크롤링이란
- 웹 크롤러가 하는 작업
- 웹 크롤러란?
- 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램 (위키백과)
- 특정 웹사이트 또는 여러 웹사이트의 정보를 수집하는데 사용됨.
- 일종의 스크랩
02. 크롤링의 종류 및 특징
- 정적 크롤링
- 브라우저를 통해 특정 페이지에 접속한 이후 보이는 내용만 크롤링
- 한 페이지에 열린 내용만 가져오기 때문에 속도가 빠름
- BeautifulSoup
- 동적 크롤링
- 입력, 클릭, 스크롤 등 움직임을 통해 웹페이지를 이용하면서 바뀌는 내용을 지속적으로 크롤링
- 다양한 데이터를 가져올 수 있지만 상대적으로 속도가 느림
- Selenium
- 동적 크롤링 vs 정적 크롤링 비교
정적크롤링 동적크롤링
접근성 | 정해진 주소를 통해 일회성 접근 | 브라우저를 사용하여 주소 또는 페이지 이동 가능 |
크롤링 범위 | 열려있는 내용만 수집 가능 | 클릭, 텍스트 입력 등 동적인 활동이 가능하기 때문에 범위에 한계는 없음 |
속도 | 빠름 | 느림 |
03. Selenium 이란
- 웹 브라우저를 자동화하여 사용하기 위한 툴
- 특정 웹 주소에 접속하고 클릭, 텍스트입력, 스크롤 등 사용자가 브라우저에서 사용할 수 있는 대부분의 동작을 프로그래밍으로 지원
- 무료로 사용가능한 라이브러리
- 지원언어
- Python, Java, C#, Javascript, Kotlin 등 다양한 언어 지원
- 공식 홈페이지
- 🌐 https://www.selenium.dev/
- Selenium 시작하기
- 시작하기 전에 파이썬(3.8.10), 크롬브라우저, Visual Studio Code는 반드시 설치되어 있어야 합니다.
- selenium 모듈 설치 (필수)
- 터미널에서 pip 를 이용하여 selenium 설치
- pip install selenium
- 브라우저 제어를 위한 webdriver 사용
- from selenium import webdriver
04. 실습 예제
- selenium으로 구글 홈페이지 접속해보기
ex01_selenium.py
# 브라우저(크롬) 실행
driver = webdriver.Chrome()
# 주소 입력(구글 홈페이지)
driver.get("https://www.google.com")
ch12 Selenium 기본 사용법 - find_element
💡 이번 차시의 학습목표
✔ Selenium으로 웹페이지의 요소 가져오기
✔ find_element(), find_elements() 사용하기
01. selenium으로 웹페이지의 요소를 가져오기
✅selenium은 html의 다양한 요소에 접근할 수 있는 method를 제공함
✅해당 페이지의 id, class, 태그, css 선택자 등 거의 모든 요소에 접근 가능
✅요소에 접근하여 해당 요소의 속성, text 값 등을 가져올 수 있음
02. 요소에 접근할 때 사용하는 주요 method
- find_element()
- 해당 요소(id, class, tag 등) 하나를 가져옴
- 똑같은 요소가 여러 개라면 첫 번째 요소만 가져옴
- find_elements()
- 똑같은 요소가 여러 개일 때 해당 요소를 모두 가져옴
- python list 타입으로 가져올 수 있음
03. find_element() method
- from selenium.webdriver.common.by import By 를 작성해야함
- 태그 요소 가져오기
- find_element(By.TAG_NAME, ‘태그이름’)
- ex) div 태그 가져오기
- find_element(By.TAG_NAME, ‘div’)
- id 요소 가져오기
- class 요소 가져오기
- find_element(By.CLASS_NAME, ‘class name’)
- class는 여러 개의 태그에 적용되는 경우가 대부분이기 때문에 특정 class요소를 가져오는 경우에는 find_elements 쓰는 것을 권장
- ex) class가 btn 인 요소 가져오기
- find_element(By.CLASS_NAME, ‘btn’)
- css selector로 요소 가져오기
- find_element(By.CSS_SELECTOR, ‘선택자 문법’)
- ex) input 태그의 name이 username인 요소 가져오기
- find_element(By.CSS_SELECTOR, ‘[name=”username”]’)
03. find_elements() method
- 사용법은 find_element와 동일함
- list 타입으로 값을 리턴하기 때문에 반복문으로 접근하여 사용
04. 실습 예제 - 많이 활용되는 라이브러리 연습하기
📥실습 코드
- 태그 요소 가져오기
ex01_tag_01.py driver = webdriver.Chrome() driver.get("https://www.example.com") # p 태그 요소 가져오기 p_element = driver.find_element(By.TAG_NAME, 'p') print(p_element) # 텍스트만 출력 print(p_element.text)
- p태그 요소 모두 가져와서 출력하기
ex01_tag_02.py # p 태그 요소 모두 가져오기 p_elements = driver.find_elements(By.TAG_NAME, 'p') print(p_elements) # p_elements의 타입 확인 print(type(p_elements)) for p in p_elements: print(p) print(p.text)
- id 요소 접근하기
ex02_id.py driver = webdriver.Chrome() driver.get("https://www.python.org/") id_element = driver.find_element(By.ID, 'site-map') print(id_element) print(id_element.text)
- class 요소 접근하기
ex03_class.py driver.get("https://www.python.org/") class_element = driver.find_elements(By.CLASS_NAME, 'main-content') for c in class_element: print(c.text)
ch13 Selenium 기본 사용법 - 요소 접근하기
💡 이번 차시의 학습목표
✔ xpath로 요소 접근하기
✔ selenium으로 키입력, 클릭 등 동적 제어하기
01. xpath
- W3C 표준으로 문서의 구조를 통해 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어(위키백과)
- W3C(World Wide Web Consortium): 웹 표준, 웹 가이드라인 등을 개발하는 국제 컨소시엄
- xml 문장 속의 요소, 속성 등을 지정하기 위한 언어
- html도 xml의 일종이기 때문에 xpath로 해당 요소에 접근하는 것이 가능함
- 브라우저의 개발자 도구에서도 xpath를 복사하는 기능 제공
02. example.com에서 xpath 확인해보기
- 브라우저에서 🌐example.com 접속
- F12눌러서 개발자도구 열기
- 또는 아래 그림처럼 메뉴에서 접근 가능
- 또는 아래 그림처럼 메뉴에서 접근 가능
- h1태그 요소 접근하여 xpath 복사하기
-
- 해당요소에서 우클릭 후 Copy → Copy Xpath 클릭하면 해당 요소의 xpath를 복사할 수 있음
- 복사한 xpath: /html/body/div/h1
-
03. selenium 동작 제어 method
- find_element로 가져온 요소 클릭하기
- ✅ driver.find_element(By.XPATH, ‘xpath값’).click()
- find_element로 가져온 요소에 값 작성하기✅ driver.find_element(By.XPATH, ‘xpath값’).send_keys(”입력값”)
- ✅ input 요소에 접근을 한 뒤 send_keys() 로 입력할 값 전달
04. 실습 예제
- 네이버 홈페이지에 접속하여 로그인 버튼 클릭
- 🔍네이버 홈페이지 접속
driver.get("<https://www.naver.com>")
- 로그인버튼 요소 가져오기
- 개발자도구로 로그인 버튼 요소 확인 후 xpath 복사
# 영상에서의 코드 login_button = driver.find_element(By.XPATH, '//*[@id="account"]/a') # 수정된 코드 login_button = driver.find_element(By.XPATH, '//*[@id="account"]/div/a')
- 개발자도구로 로그인 버튼 요소 확인 후 xpath 복사
- 로그인버튼 클릭
login_button.click()
- 🔍네이버 홈페이지 접속
- 네이버 검색창에 파이썬 이라 입력하고 검색버튼 클릭
- 🔍네이버 홈페이지 접속
driver.get("<https://www.naver.com>")
- 검색창 요소 가져오기
- 개발자도구로 검색창 요소 확인 후 xpath 복사
search = driver.find_element(By.XPATH, '//*[@id="query"]')
- 개발자도구로 검색창 요소 확인 후 xpath 복사
- 검색어 입력
search.send_keys("파이썬")
- 검색버튼 요소 가져오기
# 영상에서의 코드 search_button = driver.find_element(By.XPATH, '//*[@id="search_btn"]') # 수정된 코드 search_button = driver.find_element(By.XPATH, '//*[@id="search-btn"]')
- 검색버튼 클릭
search_button.click()
- 🔍네이버 홈페이지 접속
'Python' 카테고리의 다른 글
[Python] 유튜브 크롤링(2) (0) | 2024.03.20 |
---|---|
[Python] 유튜브 크롤링(1) (0) | 2024.03.19 |
[Python] 패키지 설치 및 numpy, matplotlib 기초 (0) | 2024.03.15 |
[Python] 함수와 모듈 (0) | 2024.03.11 |
[Python] 조건문과 반복문 (0) | 2024.03.08 |