본문으로 건너뛰기

JSDOMCrawler 가이드

JSDOMCrawler는 Window API를 활용한 스크래핑에 매우 유용합니다.

크롤러의 작동 방식

JSDOMCrawler는 특별히 설계된 got-scraping HTTP 클라이언트를 사용하여 지정된 URL에 HTTP 요청을 보내는 방식으로 작동합니다. URL들은 RequestQueue를 통해 크롤러에 전달됩니다. 받아오는 HTTP 응답은 주로 HTML 페이지입니다. 브라우저에서 URL을 처음 로드할 때 받는 것과 동일한 페이지를 가져옵니다. additionalMimeTypes 옵션을 사용하면 다양한 컨텐츠 타입도 처리할 수 있습니다.

정보

최신 웹페이지들은 대부분 첫 HTML 응답에 모든 컨텐츠를 포함하지 않습니다. 대신 첫 HTML에는 CSS와 JavaScript 같은 다른 리소스들의 링크가 포함되어 있어, 이들이 나중에 다운로드되어 최종 페이지를 구성하게 됩니다. 이러한 페이지들을 크롤링하려면 PuppeteerCrawlerPlaywrightCrawler를 사용하세요.

HTML을 가져오면 크롤러는 이를 JSDOM에 전달하여 파싱합니다. 그 결과로 프론트엔드 개발자들에게 친숙한 window 객체를 얻게 됩니다. Window API를 사용하여 페이지의 HTML을 다양하게 조작할 수 있지만, 스크래핑에서는 주로 특정 HTML 요소를 찾고 데이터를 추출하는 데 사용됩니다.

브라우저 JavaScript 사용 예시:

// 페이지 제목 가져오기
document.title; // 브라우저에서
window.document.title; // JSDOM에서

JSDOMCrawler 사용이 적합한 경우

JSDOMCrawlerCheerioCrawler의 기능만으로는 부족할 때 진가를 발휘합니다. Web API의 모든 기능을 활용할 수 있습니다!

장점:

  • 설정이 간단함
  • 프론트엔드 개발자에게 친숙함
  • 컨텐츠 조작 가능
  • 일부 안티 스크래핑 차단을 자동으로 회피

단점:

  • CheerioCrawler보다 속도가 느림
  • JavaScript 렌더링이 필요한 웹사이트에서는 작동하지 않음
  • 대상 웹사이트에 과도한 요청을 보낼 수 있음

Element API 사용 예시

페이지의 모든 링크 찾기

다음 코드는 href 속성이 있는 모든 <a> 요소를 찾아 href 값들을 배열로 추출합니다.

Array.from(document.querySelectorAll('a[href]')).map((a) => a.href);

기타 예시

예제 섹션에서 JSDOMCrawler 사용 예시들을 더 확인할 수 있습니다. 대부분의 예제에서 JSDOMCrawler 코드를 확인하실 수 있습니다.