반응형
1. 이전 강의 리뷰
이전 강의에서는 정적 웹페이지 크롤링을 진행하며, requests와 BeautifulSoup을 활용하여 HTML 데이터를 가져오고 필요한 정보를 추출하는 방법을 배웠습니다.
- HTTP 요청 및 응답 이해: requests.get()을 이용하여 웹페이지 데이터를 가져오는 방법
- HTML 구조 분석: BeautifulSoup을 사용하여 원하는 태그 및 클래스 선택
- CSS 선택자를 활용한 데이터 추출: soup.select()을 이용하여 다양한 요소 가져오기
- 실전 예제: 뉴스 기사 제목을 가져오고, robots.txt를 확인하는 과정 학습
이번 강의에서는 동적 웹페이지를 다룰 예정입니다. selenium을 활용하여 버튼 클릭, 자동 로그인, 스크롤 내리기 등의 동작을 수행하고 데이터를 수집하는 방법을 익혀봅시다.
2. selenium이란?
selenium은 웹 브라우저를 자동으로 제어할 수 있는 파이썬 라이브러리입니다. requests와 BeautifulSoup으로 접근할 수 없는 자바스크립트 기반 웹페이지를 크롤링하는 데 유용합니다.
✅ selenium을 활용하는 주요 기능
- 동적 웹페이지 크롤링 (JavaScript로 생성된 콘텐츠 수집)
- 버튼 클릭, 입력창 자동 입력 등 사용자 조작 자동화
- 웹사이트 로그인 및 세션 유지
- 특정 요소가 나타날 때까지 대기 (WebDriverWait)
3. selenium 설치 및 웹 드라이버 설정
✅ 필수 라이브러리 설치
터미널에서 다음 명령어를 실행하여 selenium을 설치합니다.
pip install selenium webdriver-manager
✅ 크롬 드라이버 자동 설치
selenium은 브라우저를 직접 제어하기 위해 웹 드라이버가 필요합니다. webdriver-manager를 사용하면 자동으로 드라이버를 설치할 수 있습니다.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# 자동으로 크롬 드라이버 다운로드 및 설정
driver = webdriver.Chrome(ChromeDriverManager().install())
위 코드를 실행하면 크롬 드라이버가 자동으로 다운로드되고 실행됩니다.
4. selenium을 활용한 웹페이지 접근 및 데이터 가져오기
🔹 예제: 네이버 뉴스 페이지에서 기사 제목 가져오기
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
# 크롬 드라이버 실행
driver = webdriver.Chrome(ChromeDriverManager().install())
# 네이버 뉴스 페이지 열기
driver.get("https://news.naver.com/")
time.sleep(2) # 페이지 로딩 대기
# 주요 뉴스 기사 제목 가져오기
news_titles = driver.find_elements(By.CLASS_NAME, "cjs_t")
for idx, title in enumerate(news_titles[:5], start=1):
print(f"{idx}. {title.text}")
# 브라우저 닫기
driver.quit()
반응형
5. 로그인 자동화 (아이디 & 비밀번호 입력)
🔹 예제: 네이버 로그인 자동화
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import time
# 크롬 드라이버 실행
driver = webdriver.Chrome(ChromeDriverManager().install())
# 네이버 로그인 페이지 열기
driver.get("https://nid.naver.com/nidlogin.login")
time.sleep(2)
# 아이디와 비밀번호 입력
id_box = driver.find_element(By.ID, "id")
pw_box = driver.find_element(By.ID, "pw")
login_button = driver.find_element(By.ID, "log.login")
id_box.send_keys("your_username") # 여기에 네이버 아이디 입력
pw_box.send_keys("your_password") # 여기에 네이버 비밀번호 입력
login_button.click()
# 로그인 후 대기
time.sleep(5)
# 브라우저 닫기
driver.quit()
6. 스크롤 내리면서 더 많은 데이터 크롤링하기
🔹 예제: 스크롤 자동 내리기
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
# 크롬 드라이버 실행
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://news.ycombinator.com/")
time.sleep(2)
# 스크롤을 여러 번 내려서 추가 기사 로드
for _ in range(5):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
# 크롤링할 데이터 가져오기
titles = driver.find_elements(By.CLASS_NAME, "storylink")
for idx, title in enumerate(titles[:10], start=1):
print(f"{idx}. {title.text}")
# 브라우저 닫기
driver.quit()
🎯 이번 강의를 마치며
이번 강의에서는 selenium을 활용하여 동적 웹페이지 크롤링을 수행하는 방법을 배웠습니다. 주요 내용은 다음과 같습니다.
- selenium을 활용하여 웹 브라우저를 자동 제어하는 방법
- 네이버 뉴스 페이지에서 기사 제목 가져오기 실습
- 로그인 자동화: 아이디와 비밀번호 입력 후 자동 로그인
- 스크롤 내리면서 더 많은 데이터 크롤링하는 기법
이제 selenium을 활용하여 복잡한 동적 웹페이지에서도 원하는 데이터를 추출할 수 있습니다! 수고하셨습니다.
🚀 다음 강의 예고
4부: 크롤링 데이터 정제 및 저장하기
- pandas를 활용한 크롤링 데이터 가공
- 정규 표현식(re)을 이용한 텍스트 필터링
- JSON 및 CSV 파일로 데이터 저장
- MySQL, SQLite 등 데이터베이스 연동 방법
반응형
'파이썬 > [파이썬을 활용한 웹 크롤링 완벽 가이드]' 카테고리의 다른 글
📌 5. Scrapy 프레임워크를 활용한 크롤링 (2) | 2025.02.12 |
---|---|
📌 4. 크롤링 데이터 정제 및 저장하기 (2) | 2025.02.11 |
📌 2. requests와 BeautifulSoup을 활용한 기초 크롤링 (0) | 2025.02.09 |
📌 1. 웹 크롤링 개요 및 환경 설정 (0) | 2025.02.08 |
댓글