node.js - Automação web com Selenium ou outra ferramentas sem abrir o nagevador? - Stack Overflow em Português
Ola, uso o Selenium no NodeJs para logar em um site e em seguida pegar todo código HTML gerado, pois neste HTML tem uma tabela e preciso transforma ela em um json.
Fazer uma automação abrir um navegador para colher essas informacoes sei que isso demanda muito processamento tendo em vista que gostaria de fazer uma API, deixa uma VPS abrindo vários navegadores para coletar informação não crio que funcionaria.
Gostaria de saber se tem outra maneira de fazer isso, sem ter que abrir o navegador igual o selenium faz para automatizar?
perguntada 26/03/19 às 22:04
Descrevendo o problema geral você vai conseguir apenas uma resposta geral. Exemplo: "Como construir uma casa?", "Use blocos e cimento, construa paredes sólidas.". Em vez disso pergunte algo específico e respondível de forma útil: "Como levantar uma parede usando esse tipo de bloco com tal inclinação e de tal altura de forma segura?", resposta: "Posicione os blocos no formato tal, execute esse algoritmo de colocação de blocos, não use essa ferramenta pois há o risco tal, aqui tem um exemplo funcionando de uma parede pronta para você ver como faz [link]". Vê? Perguntas muito amplas não ajudam. – Sorack 27/03/19 às 16:35
Alguma resposta ajudou a resolver o problema e pode sanar dúvidas similares de outros usuários? Caso positivo não esqueça de marcar a resposta como aceita. Pra fazer isso é só clicar no ✓ do lado esquerdo da mesma (abaixo do indicador de up e down votes). – Sorack 29/03/19 às 4:26
Existe uma biblioteca do Nodechamada Puppeteer para fins de automação.
A maioria das coisas que você pode fazer manualmente em um navegador pode ser feita usando Puppeteer! Aqui alguns poucos exemplos para que você possa iniciar:
Gerar screenshots e PDFs de páginas.
Percorrer uma SPA (Aplicação Single-Page_ e gerar conteúdo pré renderizado (i.e "SSR" (Rederização Server-Side)).
Automatizar o envio de formulário, teste de interface, entrada de teclado, etc.
Capturar a linha do tempo do seu site para ajudar a diagnosticar problemas de performance.
Testar extensões do Chrome.
Existe também a possibilidade de utilizar requisições pelo Node e usar um parser como o cheerio para navegar pelo resultado, tendo em mente que dessa forma o site não será interpretado como em um navegador.
Cheerio não é um navegador web
Cheerio analisa a marcação e fornece uma API para percorrer / manipular a estrutura de dados resultante. Não interpreta o resultado como um navegador da web faz. Especificamente, ele não produz uma renderização visual, aplica CSS, carrega recursos externos ou executa JavaScript.
respondida 27/03/19 às 16:30
Acredito que você possa configurar o navegador para que ele seja executado sem a interface no modo Headless, como nesse exemplo:
.setChromeOptions(new chrome.Options().headless().windowSize(screen))
.setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
Ou utilizar um browser Headless como o PhantomJS.
editada 26/03/19 às 22:57
respondida 26/03/19 às 22:48
Perfeito, deu certinho, baseado na sua resposta achei dois site que me ajudo muito...codeatest.com/chrome-headless-selenium-webdriver e o gist.github.com/anandsunderraman/e351485319a8a0e7df7e – Rafael Sene 26/03/19 às 23:13