동적 웹 스크래핑 소개
웹 스크래핑은 웹사이트에서 데이터를 추출하는 작업으로, 특히 자주 변경되는 동적 콘텐츠의 경우 어려움이 크다. 전문가 그렉, 다리오, 디에고는 Puppeteer, Selenium, Playwright 같은 도구를 활용해 이러한 난제를 극복하는 실용적인 조언을 제공했다.
그렉: 샌프란시스코에 거주하며 안델라(Andela)에서 근무하는 그렉은 전통적인 소프트웨어 엔지니어링과 웹 스크래핑을 전문으로 합니다.
다리오: 아르헨티나 출신인 다리오는 Mabel 소속으로, 로우코드 QA 자동화 도구에 주력하며 PuppeteerSharp 및 Playwright의 .NET 버전에 기여하고 있습니다.
디에고: 스페인 발렌시아에서 합류한 디에고는 셀레니움 프로젝트의 리더이자 클라우드 테스트 플랫폼인 소스 랩스의 오픈소스 리더입니다.
주요 논의 사항
1. HTML 변경 사항에 대한 대응
그레그는 신뢰할 수 있는 선택기 선택의 중요성을 강조했습니다. div > div > p와 같은 긴 하드코딩 선택기 체인은 피하세요. 대신 aria-label이나 텍스트 기반 선택기처럼 더 안정적인 선택기를 사용하세요. 가능하면 API 요청을 가로채는 것이 더 좋습니다. DOM보다 변경될 가능성이 적기 때문입니다.
도구 및 기법:
- Mozilla Readability: 복잡한 HTML을 깔끔하고 가독성 높은 형식으로 변환합니다.
- API 가로채기: DOM 변경을 우회하여 데이터 엔드포인트에 직접 접근합니다.
2. 클라이언트 측 라우팅 및 단일 페이지 애플리케이션(SPA) 탐색
Dario는 클라이언트 측 라우팅을 자주 사용하는 SPA 처리 방법을 논의했습니다. 이는 데이터 추출을 까다롭게 만듭니다. 주요 포인트는 다음과 같습니다:
- 초기 로드 신뢰 금지: 페이지가 완전히 로드되었는지 확인하기 위해 여러 번 검사합니다.
- 컨텍스트 확인: 제목이나 기타 안정적인 요소를 검증하여 다단계 프로세스의 올바른 단계에 있는지 확인합니다.
- 도구 활용: Playwright 또는 Puppeteer의 탐색 및 대기 기능을 효과적으로 사용하세요.
3. 비동기적으로 로드된 데이터 접근
디에고는 자바용 Selenide나 자바스크립트용 WebDriverIO처럼 동기화를 자동으로 처리하는 프레임워크 사용을 권장했습니다. 이러한 프레임워크는 내장 메서드를 제공하여 요소 로드 대기 과정을 단순화합니다.
팁:
- 이벤트 기반 조건문: DOM 내 특정 상태를 기다리려면
waitForFunction을사용하세요. - 요청 가로채기: 가능할 때 API 응답을 직접 캡처하여 작업하세요.
4. 지연 로딩을 위한 사용자 상호작용 모방
그레그는 페이지 상호작용 시 콘텐츠가 로드되는 지연 로딩 처리 기법을 제시했습니다. 주요 전략은 다음과 같습니다:
- 키보드 상호작용: 페이지 다운 키를 사용하여 로딩을 트리거합니다.
- 데이터 점진적 저장: 스크립트 오류 시 손실을 방지하기 위해 데이터를 덩어리 단위로 저장합니다.
- 가능한 경우 사용자 상호작용 회피: API 응답을 직접 가로채 사용자 동작 필요성을 우회합니다.
5. 섀도우 DOM 컴포넌트에서 정보 추출하기
다리오는 웹 페이지의 일부를 캡슐화하여 스크래핑을 어렵게 만드는 섀도 DOM 처리 방법을 설명했습니다. 주요 내용은 다음과 같습니다:
- 오픈 vs. 클로즈드 섀도 DOM 이해: 대부분의 도구는 오픈 섀도 DOM은 뚫을 수 있지만 클로즈드 섀도 DOM은 뚫을 수 없습니다.
- 수동 JavaScript 처리:
shadowRoot속성을 사용하여 섀도 DOM 내 요소에 수동으로 접근합니다. - 프레임워크 지원: Playwright 및 Puppeteer와 같은 도구는 섀도우 DOM을 효과적으로 처리합니다.
6. 전체 페이지 스크린샷 캡처
디에고는 전체 페이지 스크린샷을 위해 파이어폭스 사용을 권장했습니다. 파이어폭스에는 이를 위한 기본 명령어가 있기 때문입니다. 셀레늄을 크롬 개발자 도구 프로토콜과 통합하는 것도 효과적인 방법입니다.
팁:
- 네트워크 대기 상태: 스크린샷 캡처 전에 모든 요소가 로드되었는지 확인하세요.
- 내장 메서드 활용: Puppeteer의
fullPage옵션 같은 도구를 사용하면 프로세스를 간소화할 수 있습니다.
7. 대규모 작업
Jacob은 지문 관리, 세션 처리, IP 회전 등 웹 스크래핑 작업 확장 시 발생하는 과제에 대해 논의했습니다. 그는 이러한 복잡성을 추상화하여 개발자가 스크립팅에 집중할 수 있도록 지원하는 Bright Data의 Scraping Browser를 소개했습니다.
주요 기능:
- 세션 관리: 탐지를 피하기 위해 세션을 자동으로 처리합니다.
- IP 로테이션: 다양한 IP 주소를 사용하여 서로 다른 사용자를 시뮬레이션합니다.
- 테스트용 플레이그라운드: 확장 전에 통제된 환경에서 스크립트를 테스트합니다.
대화형 Q&A 세션
웨비나는 참가자들이 웹 스크래핑의 다양한 측면에 대해 질문하는 Q&A 세션으로 마무리되었습니다. 주요 주제는 다음과 같습니다:
- 프론트엔드 API 호출 가로채기: 브라우저 개발자 도구(DevTools)를 활용하여 API 요청을 식별하고 재현합니다.
- 강력한 선택자: XPath 사용을 피하고, 더 안정적이고 신뢰할 수 있는 선택자를 사용하세요.
- 인증 처리: 인증 토큰을 캐시하고 필요한 경우 수동으로 2단계 인증을 처리하세요.
결론
이 웨비나는 동적 웹 스크래핑을 마스터하려는 개발자들에게 풍부한 지식을 제공했습니다. 그렉, 다리오, 디에고가 공유한 통찰력을 활용하면 스크래핑 기술을 향상시켜 스크립트를 더욱 견고하고 효율적으로 만들 수 있습니다. 생방송을 놓친 분들을 위해 녹화본이 곧 제공될 예정입니다. 웹 스크래핑과 데이터 추출에서 탁월한 성과를 거둘 수 있도록 Bright Data의 더 많은 교육 콘텐츠를 기대해 주세요.
즐거운 스크래핑 되세요!

