JavaScript 렌더링
SPA와 JS 중심 페이지는 실제 브라우저 실행이 필요합니다. Web Scraping API는 플래그 하나로 이를 처리합니다.
렌더링 활성화
섹션 제목: “렌더링 활성화”모든 요청에 render_js=1을 추가하세요. Shifter는 새로운 헤드리스 Chrome 인스턴스를 실행하고 URL로 이동한 뒤 렌더링 후의 DOM을 반환합니다.
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"JS 렌더링은 정적 요청과 동일하게 성공한 요청당 1 크레딧으로 청구됩니다. 추가 요금은 없습니다.
콘텐츠 대기
섹션 제목: “콘텐츠 대기”대부분의 SPA는 특정 요소가 나타난 후 로딩이 완료됩니다. wait_for_css를 사용하면 해당 셀렉터가 렌더링될 때까지 대기할 수 있습니다.
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(밀리초 단위)을 사용해 브라우저가 페이지에서 소비할 수 있는 총 시간을 제한하세요.
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"전체 렌더링이 완료되기를 기다리기보다 10초 후 화면에 보이는 내용을 그대로 가져오고 싶은 느리게 로딩되는 대시보드를 스크래핑할 때 유용합니다.
JavaScript 명령
섹션 제목: “JavaScript 명령”캡처 전에 스크롤, 클릭 또는 임의의 단계를 실행하려면 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를 건너뛰면 지연 시간 측면에서 더 저렴하지만, 크레딧은 동일합니다.