Web scraping: como coletar dados de sites

Copiar à mão os preços do site de um fornecedor para uma planilha funciona com vinte produtos. Com dois mil, isso consome uma semana e ainda sai com erros de digitação. Um scraper (também chamado de raspador de dados ou parser) é um pequeno programa que abre as páginas por você, pega as mesmas informações de cada uma e as salva em uma tabela. Veja o que ele pode fazer, o que preparar e quais regras seguir.

Para que serve um scraper
Um scraper é útil sempre que o mesmo tipo de informação está em muitas páginas parecidas:
- Preços e estoque. Acompanhe como mudam os preços de um fornecedor ou quais itens estão esgotados.
- O catálogo de um fornecedor. Leve nomes, descrições, imagens e preços para a sua própria loja.
- Anúncios. Reúna em uma tabela anúncios de imóveis, carros ou vagas de um mural público.
- Eventos e artigos. Junte datas, títulos e links de uma agenda pública ou de uma página de notícias.
Colete só o que você tem permissão para coletar
Antes de tudo, confira se é legítimo pegar esses dados:
- Apenas páginas públicas. Se você precisa entrar em uma conta para ver os dados, um scraper não é a ferramenta certa.
- Leia os termos do site. Muitos sites dizem o que pode e o que não pode ser coletado. Grandes plataformas, buscadores e redes sociais costumam proibir; use a exportação oficial ou a API deles.
- Respeite limites de acesso. Uma pausa de alguns segundos entre as páginas mantém baixa a carga sobre o site. Nunca tente contornar captchas ou bloqueios.
- Siga as leis de privacidade. Nomes, e-mails e telefones de pessoas são dados pessoais, e muitos países, como o Brasil com a LGPD, limitam rigorosamente a coleta deles. Deixe-os de fora.
No fim das contas, a decisão de coletar e usar os dados de um site é sua, então verifique antes de começar.
Descreva as páginas
Um scraper é escrito para a estrutura real das páginas, então seja preciso:
- Um link para uma página de listagem e um link para a página de um item.
- Quantas páginas existem, mais ou menos, por exemplo “cerca de 40 páginas de listagem com 24 produtos cada”.
- Uma ou duas páginas salvas no navegador (Arquivo > Salvar página como) ou capturas de tela delas.
Liste os campos como colunas de uma tabela
Pense no resultado como uma planilha e nomeie as colunas em ordem, com um exemplo de cada:
- Nome: “Tábua de corte de carvalho, grande”
- Preço: “34,90”
- Preço antigo: “39,90”, se o item estiver em promoção
- Em estoque: “sim”
- Link para a página do item e link para a imagem
Dez campos claros são melhores do que trinta vagos. Acrescente as regras de que precisar, como “só itens em estoque”.
Escolha o formato e onde ele roda
- CSV abre em qualquer planilha e pode ser importado pela maioria das plataformas de loja.
- Excel é mais prático se você vai filtrar e ordenar à mão.
- JSON é ideal para um desenvolvedor que vai carregar os dados em outro lugar.
O scraper roda no seu próprio computador com Python, então os dados vão direto para você, e você pode rodá-lo de novo sempre que precisar de números atualizados.
Quando o site muda
Um scraper segue as páginas como elas são hoje. Se o site ganhar um novo design, o scraper pode deixar de encontrar os campos e precisar de uma atualização. Um site também pode limitar as visitas, mesmo em um ritmo educado. Leve isso em conta se você depende dos dados toda semana.
Resumindo
Decida de quais páginas públicas e campos você precisa, confira os termos do site, mantenha um ritmo educado e deixe os dados pessoais de fora. Se preferir não escrever o código você mesmo, peça um scraper de site: você envia o site, os campos e uma ou duas páginas salvas e recebe o código em Python, um arquivo de configurações e um guia passo a passo para rodá-lo e salvar os dados em CSV, Excel ou JSON. O pagamento só é liberado depois que você aprova o trabalho.