본문 바로가기
BIG DATA/PYTHON

[PYTHON] 파이썬 Selenium을 활용한 자동 웹 크롤링

by 라일리T 2025. 2. 23.

Selenium을 활용한 자동 웹 크롤링

 

이전 글에서는 requests와 BeautifulSoup을 이용한 웹 크롤링을 배웠습니다.
하지만 **동적인 웹페이지(JavaScript 기반)**는 requests만으로 데이터를 가져올 수 없습니다.
이런 경우 **Selenium(셀레니움)**을 사용하여 브라우저를 직접 조작하며 크롤링할 수 있습니다.

이번 글에서는 Selenium을 활용한 자동 웹 크롤링 기법을 배워보겠습니다.


1. Selenium이란?

📌 Selenium
: 웹 브라우저를 자동으로 조작하는 파이썬 라이브러리

✅ 버튼 클릭, 스크롤 이동 등 사용자가 직접 브라우저를 조작하는 것처럼 동작 가능
✅ JavaScript로 로드되는 데이터도 가져올 수 있음


2. Selenium 설치 및 설정

2.1 Selenium 설치

pip install selenium

2.2 웹드라이버 다운로드

웹 크롤링을 위해 **웹드라이버(WebDriver)**가 필요합니다.
사용하는 브라우저에 맞는 웹드라이버를 다운로드하세요.

🔗 크롬 드라이버 다운로드: https://chromedriver.chromium.org/downloads

✅ 다운로드한 WebDriver를 파이썬 코드와 같은 폴더에 저장


3. Selenium 기본 사용법

3.1 웹페이지 열기

from selenium import webdriver

driver = webdriver.Chrome()  # 크롬 브라우저 실행
driver.get("https://www.google.com")  # 웹페이지 열기

print(driver.title)  # 웹페이지 제목 출력
driver.quit()  # 브라우저 종료

✅ webdriver.Chrome() → 크롬 브라우저 실행
✅ get("URL") → 해당 웹페이지 열기
✅ quit() → 브라우저 닫기


4. 웹 요소 찾기

Selenium을 사용하면 HTML 요소를 찾아서 클릭하거나 텍스트를 추출할 수 있습니다.

4.1 특정 요소 찾기 (find_element)

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.google.com")

search_box = driver.find_element("name", "q")  # 검색창 찾기
search_box.send_keys("Python 크롤링")  # 검색어 입력

search_box.submit()  # 엔터 입력
driver.quit()

find_element("name", "q") → name="q"인 요소 찾기
.send_keys("Python 크롤링") → 검색창에 입력
.submit() → 엔터 키 입력

4.2 여러 개의 요소 찾기 (find_elements)

links = driver.find_elements("tag name", "a")  # 모든 링크 가져오기
for link in links:
    print(link.text)

✅ find_elements("tag name", "a") → <a> 태그(링크) 모두 찾기


5. 버튼 클릭 및 자동화

5.1 버튼 클릭하기

button = driver.find_element("name", "btnK")  # 검색 버튼 찾기
button.click()  # 클릭

5.2 페이지 로딩 대기 (time.sleep)

웹페이지가 로딩될 시간을 기다려야 합니다.

import time

time.sleep(2)  # 2초 동안 대기

5.3 동적 페이지 스크롤링

일부 웹사이트는 스크롤을 내려야 모든 데이터가 로딩됩니다.

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 페이지 끝까지 스크롤
time.sleep(2)

JavaScript 실행 가능 → execute_script()


6. 실전 예제: 네이버 뉴스 검색

📌 목표: "파이썬" 관련 네이버 뉴스 검색 결과 크롤링

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

# 1. 브라우저 열기
driver = webdriver.Chrome()
driver.get("https://news.naver.com")  # 네이버 뉴스 페이지 열기
time.sleep(2)  # 페이지 로딩 대기

# 2. 검색창 찾기
search_box = driver.find_element(By.NAME, "query")
search_box.send_keys("파이썬")  # 검색어 입력
search_box.send_keys(Keys.RETURN)  # 엔터 키 입력
time.sleep(2)

# 3. 뉴스 제목 크롤링
titles = driver.find_elements(By.CLASS_NAME, "news_tit")  # 뉴스 제목 요소 찾기

news_list = []
for title in titles:
    news_list.append(title.text)  # 제목 텍스트 저장

# 4. 데이터 저장
df = pd.DataFrame(news_list, columns=["News Title"])
df.to_csv("naver_python_news.csv", index=False, encoding="utf-8-sig")

# 5. 브라우저 종료
driver.quit()

print("네이버 뉴스 크롤링 완료!")

검색창에 "파이썬" 입력 후 검색
find_elements(By.CLASS_NAME, "news_tit") → 뉴스 제목 수집
CSV 파일로 저장


7. 크롤링 자동화 응용

💡 Selenium을 활용한 자동화 응용 예시
자동 로그인 (ID/PW 입력 후 버튼 클릭)
SNS 데이터 크롤링 (트위터, 인스타그램 등)
구글 검색 결과 크롤링
온라인 쇼핑몰에서 가격 비교하기


8. 결론

이번 글에서는 Selenium을 활용한 자동 웹 크롤링 기법을 배웠습니다.

  • Selenium 설치 및 기본 사용법
  • 웹 요소 찾기 및 조작 (검색, 클릭, 스크롤 등)
  • 네이버 뉴스 검색 결과 자동 크롤링

다음 글에서는 크롤링한 데이터를 활용하여 자동 보고서 생성하기를 배워보겠습니다! 🚀

 

 

 

[PYTHON] 파이썬 웹 크롤링 데이터를 활용한 데이터 분석

웹 크롤링 데이터를 활용한 데이터 분석 이전 글에서는 **웹 크롤링(Web Scraping)**을 이용해 웹에서 데이터를 수집하는 방법을 배웠습니다.그렇다면 크롤링한 데이터를 어떻게 활용할 수 있을까

englishforkid.tistory.com

 

 

[PYTHON] 파이썬을 활용한 웹 크롤링(Web Crawling) 기초

파이썬을 활용한 웹 크롤링(Web Scraping) 기초인터넷에는 다양한 데이터가 존재합니다.하지만 모든 데이터를 직접 다운로드할 수 있는 것은 아니므로, **웹 크롤링(Web Scraping)**을 사용하여 원하는

englishforkid.tistory.com

 

 

[PYTHON] 데이터 분석을 위한 파이썬 라이브러리: NumPy와 Pandas 기초

데이터 분석을 위한 파이썬 라이브러리: NumPy와 Pandas 기초데이터 분석에서 빠른 연산과 효율적인 데이터 처리는 필수입니다.파이썬에는 이를 위해 NumPy와 Pandas라는 강력한 라이브러리가 있습니

englishforkid.tistory.com