개요 : Python을 활용한 웹 크롤링은 정적 웹사이트부터 동적으로 JavaScript로 렌더링되는 사이트까지 다양한 데이터 수집에 활용됩니다. 크롤링 목적에 따라 BeautifulSoup + requests 또는 Selenium을 사용하는 방식이 다릅니다. 아래는 주요 크롤링 기법과 코드 예시를 구조적으로 정리한 내용입니다.
정적 웹사이트 크롤링 (requests + BeautifulSoup)
정적 웹사이트는 서버에서 HTML로 응답하는 구조이며, 가장 빠르고 간단하게 데이터를 수집할 수 있습니다.
예시: 네이버 뉴스 제목 크롤링
코드 |
---|
|
동적 웹사이트 크롤링 (Selenium)
JavaScript로 구성된 웹사이트는 requests만으로는 데이터가 보이지 않으며, 실제 브라우저 동작을 모방하는 Selenium을 사용해야 합니다.
예시: 네이버 쇼핑에서 상품명 추출
코드 |
---|
|
크롤링 시 주의할 점
웹 크롤링은 사이트의 구조와 정책을 존중해야 하며, 다음 항목들을 반드시 확인하고 준수해야 합니다.
- robots.txt: 해당 사이트의 크롤링 허용 범위를 확인
- User-Agent 설정: 브라우저처럼 보이도록 헤더 추가
- 요청 간격: time.sleep() 등으로 과도한 요청 방지
- 공식 API 우선 사용: 가능하다면 API가 훨씬 안전하고 안정적
추천 라이브러리 요약
목적 | 라이브러리 | 설명 |
---|---|---|
HTML 파싱 | BeautifulSoup | HTML 구조를 트리 형태로 분석 |
HTTP 요청 | requests, httpx | 빠르고 간단한 요청 |
브라우저 제어 | Selenium | 동적 크롤링, 자동 입력/클릭 |
비동기 크롤링 | aiohttp | 수천 개 요청을 비동기로 처리 |
요약 : 웹 크롤링은 목적과 웹 구조에 따라 방식이 달라집니다. 정적 페이지는 requests + BeautifulSoup으로, 동적 페이지는 Selenium으로 접근합니다. 아래는 크롤링 방식별 요약입니다.
구분 | 기술 | 장점 | 단점 |
---|---|---|---|
정적 크롤링 | requests + BeautifulSoup | 빠름, 가볍고 간단 | JS 렌더링 불가 |
동적 크롤링 | Selenium | 브라우저 자동화, JS 처리 가능 | 느림, 리소스 많음 |