피드로 돌아가기
Dev.toBackend
원문 읽기
HTTP 상태 코드 기반 재시도 전략과 DOMXPath를 통한 고신뢰성 Web Scraping 구현
PHP cURL Web Scraping: The Complete Working Guide
AI 요약
Context
단순 cURL 요청만으로는 Bot Detection에 의한 403 에러 및 불안정한 HTML 구조로 인한 파싱 실패 발생. 정규표현식 기반의 데이터 추출 방식은 웹 사이트의 작은 변경에도 시스템 전체가 중단되는 취약한 구조적 한계를 가짐.
Technical Solution
- User-Agent 및 HTTP Header 최적화를 통한 Bot Detection 회피 및 브라우저 요청 모사
- DOMDocument와 DOMXPath 도입으로 정규표현식 대비 HTML 구조 변경에 강건한 데이터 추출 설계
- libxml_use_internal_errors 설정을 통한 Malformed HTML의 파싱 경고 제거 및 프로세스 안정성 확보
- HTTP 상태 코드별 차등 재시도 로직(Retry Logic)을 통한 일시적 서버 오류(5xx) 및 Rate Limit(429) 대응
- URL 패턴 추측 대신 Next 버튼의 href 속성을 추적하는 동적 Pagination 처리 구조 설계
- CURLOPT_TIMEOUT 및 FOLLOWLOCATION 설정을 통한 무한 대기 방지 및 리다이렉션 자동 처리
실천 포인트
- Bot Detection 회피를 위한 최신 브라우저 User-Agent 설정 여부 확인 - HTML 파싱 시 정규표현식 대신 DOM 기반의 XPath 쿼리 사용 권장 - 429(Too Many Requests) 응답 시 즉시 재시도가 아닌 지수 백오프 또는 대기 시간 적용 - 403(Forbidden) 및 404(Not Found) 등 영구적 실패 케이스의 즉시 종료 로직 구현