웹스크래핑과 데이터 수집
Chapter 1-4 정적 스크래핑과 동적 스크래핑
Chansman
2025. 4. 15. 13:22
📌 정적 스크래핑과 동적 스크래핑
웹 스크래핑은 웹 페이지에서 데이터를 추출하는 기술입니다. 웹 페이지가 정적인지 동적인지에 따라 스크래핑 방식이 달라집니다.
🚦 정적 웹 페이지
- 정적 웹 페이지는 서버에 이미 저장된 HTML 문서를 클라이언트에게 전송하는 방식입니다.
- 사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정된 웹 페이지를 보게 됩니다.
- 모든 사용자는 같은 결과의 웹 페이지를 서버에서 요청하고 응답을 받습니다.
- 예시: 기업 소개 페이지, 블로그 게시글
정적 크롤링
- 이미 작성된 HTML 문서를 누구나 동일하게 가져올 수 있기 때문에, requests.get 방식으로 사이트의 HTML 코드를 전송받아 데이터를 크롤링하는 방식입니다.
- 주로 정적 페이지에서 데이터를 쉽게 수집할 수 있습니다.
import requests
url = 'https://example.com'
response = requests.get(url)
html_content = response.text # HTML 코드 가져오기
💻 동적 웹 페이지
- 동적 웹 페이지는 서버에서 요청 정보를 처리한 후 실시간으로 HTML 문서를 제작하여 클라이언트에게 전송하는 방식입니다.
- 사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됩니다.
- 같은 페이지라도 사용자마다 다른 결과의 웹 페이지를 서버에 요청하고 받을 수 있습니다.
- 대부분의 웹 애플리케이션은 동적 웹 페이지입니다.
- 예시: 네이버, 구글 검색 결과
동적 크롤링
- 동적 크롤링은 여러 페이지를 이동하며 마우스로 클릭하거나 타이핑을 통해 입력된 데이터를 추출하는 방식입니다.
- JavaScript로 생성된 동적 콘텐츠는 requests.get 방식으로는 가져올 수 없기 때문에, **셀레니움(Selenium)**과 같은 도구를 사용하여 브라우저를 자동화하거나, JavaScript 실행을 대기 후 데이터를 수집할 수 있습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
# 셀레니움 드라이버 실행
driver = webdriver.Chrome()
driver.get('https://example.com')
# 동적으로 로드된 데이터 찾기
data = driver.find_element(By.ID, 'data-id').text
print(data)
driver.quit()
✅ 정적 크롤링 vs 동적 크롤링
구분정적 크롤링동적 크롤링
웹 페이지 | 서버에 이미 저장된 HTML 파일을 요청 | 서버에서 요청을 처리하여 실시간으로 HTML 생성 |
데이터 추출 | requests.get()으로 쉽게 추출 가능 | JavaScript 실행이 필요하여 셀레니움 등 필요 |
사용 예시 | 기업 소개 페이지, 블로그 게시글 등 | 실시간으로 데이터가 변경되는 웹사이트 (네이버 등) |
기술 | HTTP 요청을 통해 HTML을 직접 받음 | 브라우저 자동화 도구(셀레니움 등)를 사용하여 데이터 수집 |
✅ 결론
- 정적 크롤링은 이미 존재하는 HTML 페이지를 가져오는 것으로, 간단한 크롤링 작업에 적합합니다.
- 동적 크롤링은 자바스크립트로 동적으로 생성된 데이터를 처리할 수 있는 기술이 필요하며, 셀레니움과 같은 도구를 사용하여 데이터를 추출합니다.
검색
ChatGPT는 실수를 할 수 있습니다. 중요한 정보는 재차 확인하세요.