콘텐츠로 이동
로그인 가입하기

JavaScript 렌더링

SPA와 JS 중심 페이지는 실제 브라우저 실행이 필요합니다. Web Scraping API는 플래그 하나로 이를 처리합니다.

모든 요청에 render_js=1을 추가하세요. Shifter는 새로운 헤드리스 Chrome 인스턴스를 실행하고 URL로 이동한 뒤 렌더링 후의 DOM을 반환합니다.

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"

JS 렌더링은 정적 요청과 동일하게 성공한 요청당 1 크레딧으로 청구됩니다. 추가 요금은 없습니다.

대부분의 SPA는 특정 요소가 나타난 후 로딩이 완료됩니다. wait_for_css를 사용하면 해당 셀렉터가 렌더링될 때까지 대기할 수 있습니다.

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://shop.example.com&render_js=1&wait_for_css=.product-price"

.product-price가 DOM에 나타나는 즉시 요청이 완료되며, 타임아웃(기본값 30초) 시 실패합니다.

timeout(밀리초 단위)을 사용해 브라우저가 페이지에서 소비할 수 있는 총 시간을 제한하세요.

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"

전체 렌더링이 완료되기를 기다리기보다 10초 후 화면에 보이는 내용을 그대로 가져오고 싶은 느리게 로딩되는 대시보드를 스크래핑할 때 유용합니다.

캡처 전에 스크롤, 클릭 또는 임의의 단계를 실행하려면 js_instructions(URL 인코딩된 JSON)를 사용하세요. 일반적인 패턴은 다음과 같습니다.

무한 피드를 로드하기 위한 스크롤:

[{"action": "scrollTo", "selector": "footer", "timeout": 5000, "block": "start"}]

스크래핑 전 버튼 클릭:

[{"action": "click", "selector": "button.load-more", "timeout": 3000}]

여러 단계 연결:

[
{"action": "click", "selector": "button.accept-cookies"},
{"action": "scrollTo", "selector": "div.results"},
{"action": "wait", "duration": 2000}
]

배열을 URL 인코딩된 문자열로 js_instructions에 전달하세요.

screenshot=1을 추가하면 DOM 대신 전체 페이지 스크린샷을 캡처합니다. 응답은 바이너리 PNG입니다. 고급 기능을 참고하세요.

  • 정적 HTML 페이지 (뉴스 기사, 블로그 게시물, RSS 형식 콘텐츠)
  • JSON API (스크래핑 엔드포인트 대신 직접 요청을 사용하세요)
  • 파일 및 바이너리

render_js를 건너뛰면 지연 시간 측면에서 더 저렴하지만, 크레딧은 동일합니다.

  • 추출 규칙, 렌더링된 페이지에서 구조화된 데이터를 추출합니다.
  • 고급 기능, 헤더, 쿠키, 스크린샷, POST.