Rastreando preços de supermercados
- Em dezembro de 2022, foi criado um site para acompanhar as variações de preços de três grandes supermercados da Grécia.
- Nesse processo, foi preciso resolver vários problemas, e muitos aprendizados foram obtidos.
Fazendo scraping de sites em js
- O principal problema eram os sites renderizados com JavaScript.
- Foi usado o Playwright para controlar o navegador de forma programática.
- O Playwright oferece suporte aos navegadores Chromium, Safari e Firefox, e pode ser usado com Node, Java, .NET e Python.
- Foi escrito código para lidar com rolagem infinita e extrair informações dos produtos.
Automação
- Em um M1 MacBook Pro, levaram de 50 minutos a 2 horas e 30 minutos para fazer o scraping de um supermercado inteiro.
- Isso era bom para desenvolvimento e testes, mas era necessária uma solução mais permanente.
Usar um notebook antigo?
- Foi tentado usar um notebook antigo de 2013, mas o desempenho foi muito decepcionante.
Usar a nuvem?
- A AWS era cara demais, e a Hetzner era muito mais barata.
- Foi decidido usar os servidores da Hetzner.
Usar notebook antigo e nuvem!
- O scraping foi automatizado em um servidor na nuvem, e o notebook antigo foi usado como servidor de CI.
- Foi usado o Concourse para configurar o pipeline e executar o trabalho de scraping diariamente.
Contornando limitações de IP
- Devido a regras de firewall da Akamai, requisições de endereços IP não residenciais eram bloqueadas.
- Foi usado o Tailscale para fazer as requisições parecerem vir do IP residencial.
Causas e momentos das falhas
- O projeto de scraping é afetado pelos desenvolvedores do site.
- Há dois tipos de falha: breaking changes e non-breaking changes.
- Receber feedback rapidamente é importante.
Otimização
- Foram realizados vários trabalhos de otimização, como alertas por e-mail, histerese, timeouts e configuração de novas tentativas.
- O desempenho foi melhorado usando um servidor maior e reduzindo a busca de dados.
Custos
- O custo de uso do servidor na Hetzner é muito baixo.
- Os custos de armazenamento de dados foram reduzidos usando o tier gratuito do R2 da Cloudflare.
Conclusão
- São explicados os principais componentes usados para construir um pipeline de scraping para acompanhar variações nos preços de supermercados.
Resumo do GN⁺
- Este texto compartilha a experiência de usar Playwright e serviços de nuvem para acompanhar variações de preços em supermercados.
- Ele aborda como fazer scraping de sites renderizados com JavaScript, além de métodos de automação e otimização.
- Também explica como usar Hetzner e Tailscale para reduzir custos e contornar limitações de IP.
- O texto pode ser útil para pessoas interessadas em web scraping e automação.
1 comentários
Comentários do Hacker News
Compartilhando a experiência de ter enfrentado um problema parecido
Tocando um projeto semelhante na Nova Zelândia
Criou um site semelhante e recebeu bastante atenção
Os dois principais supermercados da Austrália podem formar um monopólio por meio de algoritmos de IA de análise de preços
Atua no mercado sueco há mais de 8 anos
Com transparência de preços, o rastreamento ficaria mais fácil
Como fazer mudanças sem quebrar o scraper
Compartilhando a experiência de acompanhar preços ao se mudar para uma nova região
O mais difícil é contornar bloqueios cada vez mais sofisticados, mais do que fazer scraping em si
Problema de renderização com JavaScript no lado do cliente