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
'BIG DATA > PYTHON' 카테고리의 다른 글
[PYTHON] Python으로 자동 이메일 발송하기 (SMTP 활용) (0) | 2025.02.24 |
---|---|
[PYTHON] 파이썬으로 자동화된 데이터 보고서 생성하기 (0) | 2025.02.23 |
[PYTHON] 파이썬 웹 크롤링 데이터를 활용한 데이터 분석 (0) | 2025.02.23 |
[PYTHON] 파이썬을 활용한 웹 크롤링(Web Crawling) 기초 (0) | 2025.02.22 |
[PYTHON] 파이썬 데이터 시각화: Matplotlib과 Seaborn 기초 (0) | 2025.02.22 |