파이썬으로 웹 크롤링 고급편 3강입니다!
이전 강의에서는 로그인 세션을 유지하면서 데이터를 수집하는 방법을 배워봤습니다. 이번 시간에는 크롤링 실전에서 매우 자주 마주치는 문제인 AJAX 기반 콘텐츠를 크롤링하는 방법을 익혀봅니다.
1. AJAX 콘텐츠란?
AJAX는 Asynchronous JavaScript and XML의 약자로, 전체 페이지를 새로 고침하지 않고도 필요한 데이터만 비동기적으로 불러오는 기술입니다.
쇼핑몰 검색 결과, 댓글 목록, 무한 스크롤 페이지 등이 전형적인 AJAX 콘텐츠입니다. 이런 페이지는 HTML에 데이터가 처음부터 없고, JavaScript가 실행되면서 외부 API를 통해 불러오는 구조이기 때문에 단순한 requests.get()으로는 원하는 정보를 얻을 수 없습니다.
2. AJAX 크롤링의 핵심 전략
1. 개발자 도구(Network 탭)로 AJAX 요청을 추적한다.
2. JavaScript가 호출하는 API 엔드포인트를 찾아낸다.
3. 직접 그 API에 요청을 보내 JSON 등 응답 데이터를 가져온다.
3. 실전 예시 – 네이버 뉴스 AJAX 요청 분석
1. https://news.naver.com 에 접속 후 개발자 도구 열기 (F12)
2. ‘사회’ 탭 클릭 → Network 탭에서 ‘XHR’ 필터 선택
3. 새로 로드된 목록 중 `.json`, `.ajax`, `/list` 형태의 URL을 주목
예를 들어:
https://news.naver.com/main/list.naver?mode=LSD&mid=sec&sid1=100&date=20250402
이런 URL은 JSON 응답이 아니라면 HTML 조각이 반환될 수도 있으니 구조 확인 필수입니다.
4. JSON 응답을 받는 경우
많은 사이트는 JSON 형식으로 데이터를 반환합니다.
예시: 쿠팡 카테고리 상품 목록 API
import requests
url = "https://api.example.com/products?page=1"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
data = res.json()
for item in data['results']:
print(item['title'], item['price'])
이렇게 JSON 응답을 직접 받아 필요한 필드를 추출하면 끝입니다!
5. HTML 조각을 반환하는 경우
AJAX 요청의 응답이 HTML 태그 일부라면 BeautifulSoup으로 처리 가능합니다.
res = requests.get("https://example.com/ajax/articles")
soup = BeautifulSoup(res.text, "html.parser")
articles = soup.select(".article-title")
for a in articles:
print(a.text.strip())
AJAX라고 해도 결국 데이터를 어떻게 응답하는가만 이해하면 처리 방법은 어렵지 않습니다.
6. 무한 스크롤 페이지 다루기
많은 페이지는 사용자가 스크롤을 내릴 때마다 더 많은 콘텐츠를 동적으로 불러옵니다. 이 경우에는 요청 URL을 분석해 ?page=2
, ?offset=20
등 반복 요청을 만들 수 있습니다.
예시:
for page in range(1, 6):
url = f"https://example.com/api/posts?page={page}"
res = requests.get(url)
data = res.json()
for post in data['posts']:
print(post['title'])
7. 정리
- AJAX 콘텐츠는 브라우저 개발자 도구에서 ‘XHR’ 요청을 분석
- 응답이 JSON이면 requests + json 처리
- 응답이 HTML이면 BeautifulSoup 처리
- 무한 스크롤은 반복적인 API 요청으로 해결 가능
8. 다음 강의 예고
4강 – Selenium을 활용한 크롤링: 자바스크립트 실행 페이지 수집
AJAX 요청 분석이 어렵거나, 웹페이지의 모든 콘텐츠가 JavaScript로 그려지는 경우에는 Selenium을 활용해야 합니다. 다음 시간에는 웹 브라우저를 조작하는 자동화 방식으로 크롤링하는 실습을 해보겠습니다!
—
이 강의는 실전 웹 크롤링 기술을 단계별로 실습하며 익힐 수 있도록 구성된 고급 과정입니다. 계속해서 함께 도전해보세요!