본문 바로가기
빅데이터 & AI

[크롤링] Selenium을 이용한 네이버 뉴스 크롤링 (0) - Crawling & Selenium

by heosj 2025. 3. 25.

크롤링 Crawling

  • 웹페이지를 가져와서 데이터를 추출해 내는 방법
  • 웹페이지 데이터의 로드 방식에 따라 정적 크롤링동적 크롤링 중 선택하여 사용함

정적 크롤링

  • 정적인 데이터를 수집하는 방법
  • HTML 문서가 서버에서 완성된 상태로 제공되는 데이터
  • 즉, 페이지를 열었을 때 추가적인 JavaScript 실행 없이 모든 정보가 표시되는 것.
  • 라이브러리: requests(웹페이지 요청), BeautifulSoup(HTML 분석)
  • 예시 코드
import requests
from bs4 import BeautifulSoup

# 웹페이지 요청
url = "https://naver.com"
response = requests.get(url)

# HTML 파싱
soup = BeautifulSoup(response.text, "html.parser")

# 특정 요소 선택
titles = soup.find_all("a", class_="news_tit")

# 출력
for title in titles:
	print(title.get_text())

 


동적 크롤링

  • 동적인 데이터를 수집하는 방법
  • HTML 문서가 처음 로드될 때는 데이터가 포함되지 않고, JavaScript가 실행된 후 데이터가 추가적으로 로드됨
  • 스크롤을 내리거나, 버튼을 누르거나, 검색하여 데이터가 표시되는 경우
  • 라이브러리: Selenium

구분 정적 크롤링 동적 크롤링
데이터 유형 HTML 문서 내 바로 포함된 데이터 JavaScript 실행 후 추가 로드되는 데이터
속도 빠름 느림(브라우저 실행)
라이브러리 requests, BeautifulSoup Selenium
활용 뉴스 기사, 블로그, 정적 웹페이지 무한 스크롤, 로그인이 필요한 페이지, AJAX 요청 페이지

셀레니움 Selenium

  • 웹 브라우저를 자동으로 조작할 수 있는 오픈 소스 프레임워크
  • 웹 애플리케이션을 테스트하거나, 데이터를 크롤링할 때 사용됨

셀레니움 주요기능

  • 브라우저 자동화
    • 사용자가 직접 클릭하거나 입력하는 행동을 Selenium 코드로 실행 가능함
    • 버튼 클릭, 입력 필드 입력, 페이지 이동 등의 동작이 가능함
  • 다양한 브라우저 지원
    • Chrome, Firefox, Edge 등 여러 브라우저에서 동작 가능함
    • 브라우저 없이 백그라운드에서 실행하는 Headless 모드를 지원함
  • 동적 웹 페이지 제어
    • JavaScript로 동적으로 생성되는 데이터를 이용할 수 있음
  • 테스트 자동화 기능
    • 웹사이트 기능 테스트 시, 수동으로 클릭하는 대신 Selenium을 활용해 자동화가 가능함

 

Selenium 기본 동작 방식

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

# Chrome WebDriver 실행
# WebDriver에 의해 Chrome 브라우저 자동 Open
driver = webdriver.Chrome() 

url = "https://www.naver.com"
driver.get(url)

# 페이지가 완전히 로드될 때까지 3초간 대기
time.sleep(3)

# 특정 요소 선택
titles = driver.find_elements(By.CLASS_NAME, "news_tit")

# 출력
for title in titles:
	print(title.text)

# 브라우저 닫기
driver.quit()

 

위 코드를 실행하면 크롬 브라우저가 자동으로 열리고 설정한 URL로 이동하여 원하는 요소의 데이터를 추출할 수 있음