Case study

Crypto Web Scraper com Puppeteer

Aplicação de web scraping desenvolvida em JavaScript e Node.js para automatizar a coleta de dados de criptomoedas no Yahoo Finance. O projeto utiliza Puppeteer para navegação e extração das informações, integra uma API externa de câmbio para converter valores de USD para BRL e disponibiliza os resultados em uma tabela HTML gerada dinamicamente.

jan. de 2024jan. de 2024
webscrapper

Tecnologias

CSSHTMLJavascriptNode.jsRESTfulPuppeteer

O problema

Dados financeiros disponíveis em páginas web nem sempre possuem uma interface de API adequada para determinados experimentos ou automações. O desafio era coletar automaticamente informações de criptomoedas diretamente de uma página web, estruturar os dados obtidos, realizar cálculos adicionais e apresentar essas informações de forma legível para o usuário.

A solução

Foi desenvolvida uma aplicação em Node.js utilizando Puppeteer para controlar um navegador e acessar páginas do Yahoo Finance. A aplicação identifica os elementos relevantes através de seletores do DOM, extrai nomes, preços e variações das criptomoedas e organiza os resultados em uma estrutura de dados. Após a coleta, uma API externa de câmbio é consultada para obter a taxa atual de conversão entre dólar e real. Os dados são então processados e utilizados para gerar dinamicamente uma página HTML contendo uma tabela com preços, variações e valores convertidos para BRL.

Responsabilidades

Desenvolvimento da solução de scraping de ponta a ponta, incluindo automação do navegador, definição de seletores para extração dos dados, tratamento e normalização dos valores obtidos, integração com serviço externo de câmbio e construção da interface HTML utilizada para apresentar os resultados. Também foi realizada a separação das responsabilidades da aplicação em classes e funções auxiliares para manter a lógica de scraping, processamento dos dados e apresentação desacopladas.

Decisões técnicas

Puppeteer foi utilizado para controlar um navegador real e permitir a leitura de conteúdo diretamente do DOM da página. A lógica de scraping foi encapsulada em classes, separando a configuração dos seletores da execução da coleta. A extração foi implementada utilizando page.evaluate(), permitindo executar a leitura dos elementos diretamente no contexto da página. A aplicação utiliza programação assíncrona para coordenar navegação, scraping e consumo de uma API externa. Os dados coletados são normalizados antes dos cálculos, e uma API de câmbio é utilizada para converter os preços originalmente apresentados em USD para BRL. Para manter o projeto independente de frameworks web, foi utilizado o módulo HTTP nativo do Node.js para servir a página HTML gerada dinamicamente.

Resultados

Foi desenvolvida uma aplicação capaz de automatizar a coleta de informações de criptomoedas, processar os valores obtidos e enriquecer os dados com conversão monetária em tempo de execução. O projeto resultou em uma solução funcional que integra automação de navegador, scraping de páginas web, processamento de dados, consumo de APIs externas e geração dinâmica de uma interface para apresentação dos resultados.