Renderização de JavaScript
SPAs e páginas com muito JS precisam de execução real em navegador. A Web Scraping API lida com isso com uma única flag.
Ativar renderização
Seção intitulada “Ativar renderização”Adicione render_js=1 a qualquer requisição. O Shifter inicia uma nova instância headless do Chrome, navega até a URL e retorna o DOM pós-renderização.
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"A renderização JS é cobrada com o mesmo 1 crédito por requisição bem-sucedida que os fetches estáticos. Sem sobretaxa.
Aguardando conteúdo
Seção intitulada “Aguardando conteúdo”A maioria das SPAs termina de carregar depois que um elemento específico aparece. Use wait_for_css para bloquear até que esse seletor seja renderizado:
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://shop.example.com&render_js=1&wait_for_css=.product-price"A requisição é concluída assim que .product-price está no DOM, ou falha por timeout (padrão de 30s).
Forçando timeouts
Seção intitulada “Forçando timeouts”Limite o tempo total que o navegador pode gastar em uma página com timeout (em milissegundos):
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"Útil para fazer scraping de dashboards de carregamento lento, quando você quer o que estiver visível após 10 segundos em vez de uma renderização completa.
Instruções JavaScript
Seção intitulada “Instruções JavaScript”Role a página, clique ou execute etapas arbitrárias antes da captura usando js_instructions (JSON codificado em URL). Padrões comuns:
Rolar para carregar feeds infinitos:
[{"action": "scrollTo", "selector": "footer", "timeout": 5000, "block": "start"}]Clicar em um botão antes de fazer scraping:
[{"action": "click", "selector": "button.load-more", "timeout": 3000}]Encadear várias etapas:
[ {"action": "click", "selector": "button.accept-cookies"}, {"action": "scrollTo", "selector": "div.results"}, {"action": "wait", "duration": 2000}]Passe o array como uma string codificada em URL em js_instructions.
Capturas de tela
Seção intitulada “Capturas de tela”Tire uma captura de tela da página inteira em vez do DOM adicionando screenshot=1. A resposta é um PNG binário. Veja Avançado.
Quando pular a renderização
Seção intitulada “Quando pular a renderização”- Páginas HTML estáticas (artigos de notícias, posts de blog, conteúdo no estilo RSS)
- APIs JSON (use um fetch direto, não o endpoint de scraping)
- Arquivos e binários
Pular render_js é mais barato em latência, embora os créditos sejam os mesmos.
Próximos passos
Seção intitulada “Próximos passos”- Regras de extração, extraia dados estruturados da página renderizada.
- Avançado, cabeçalhos, cookies, capturas de tela, POST.