A qualidade do modelo de ML depende diretamente da qualidade e volume dos dados de treinamento. Mas assim que você começa a coletar milhares de páginas — os sites começam a bloquear as solicitações, mostrar captchas e banir IPs. Neste artigo, vamos discutir como construir um pipeline confiável de coleta de dados para conjuntos de dados: quais ferramentas usar, como contornar proteções e qual tipo de proxy é adequado para cada tarefa.
Por que os sites bloqueiam a coleta de dados e o que fazer a respeito
Quando você inicia a coleta automática de dados, o site vê não um usuário comum, mas um fluxo de solicitações de um único endereço IP. Isso imediatamente levanta bandeiras vermelhas nos sistemas de proteção — Cloudflare, DataDome, PerimeterX e outras soluções anti-bot. O resultado: captcha, bloqueio temporário ou banimento total do IP.
O problema é especialmente agudo para projetos de ML, porque um conjunto de dados requer não 100 páginas, mas dezenas de milhares. Para treinar até mesmo um modelo simples de classificação de texto, você precisa de pelo menos 5.000 a 10.000 exemplos. Para visão computacional — centenas de milhares de imagens. Coletar tal volume de um único IP é fisicamente impossível.
Os sistemas de proteção analisam os seguintes parâmetros:
- Frequência de solicitações — mais de 10 a 20 solicitações por minuto de um único IP já é suspeito.
- User-Agent e cabeçalhos — cabeçalhos padrão de parsers são facilmente reconhecíveis.
- Ausência de cookies e dados de sessão — um navegador real sempre traz histórico.
- Geolocalização do IP — um IP de data center da Holanda em um site de língua russa parece suspeito.
- Padrão de comportamento — uma pessoa lê uma página por 30 a 60 segundos, um bot — 0,3 segundos.
A solução é uma combinação de proxies corretos, rotação de IPs e simulação do comportamento de um usuário real. Vamos analisar cada elemento em mais detalhes.
De onde vêm os dados para conjuntos de dados de ML: principais fontes
Antes de falar sobre ferramentas, é importante entender — de onde vêm os dados para treinar modelos. As fontes são divididas em várias categorias, e cada uma requer uma abordagem diferente.
Conjuntos de dados abertos (sem scraping)
A primeira coisa a verificar são os conjuntos de dados abertos já existentes. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository contêm milhares de conjuntos de dados prontos. Se sua tarefa é padrão (classificação de texto, reconhecimento de objetos, análise de sentimentos), é possível que o conjunto de dados já exista. Isso economiza semanas de trabalho.
Web scraping (requer proxies)
Quando não há dados prontos ou eles não se encaixam na sua especificidade — é necessário fazer scraping. Tarefas típicas:
- Coleta de avaliações do Wildberries, Ozon, Yandex.Market para análise de sentimentos
- Scraping de sites de notícias para treinar modelos de linguagem
- Coleta de imagens de produtos para modelos de visão computacional
- Scraping de vagas do hh.ru, SuperJob para modelos de RH
- Coleta de dados de preços de marketplaces para modelos preditivos
- Scraping de redes sociais (VKontakte, Twitter/X) para tarefas de NLP
APIs de plataformas (parcialmente fechadas)
Algumas plataformas oferecem APIs oficiais — Twitter/X API, Reddit API, Google Places API. O problema: elas são caras, têm limites e muitas vezes não fornecem o volume necessário de dados gratuitamente. Portanto, muitas equipes de ML combinam APIs com scraping.
Dados sintéticos
Uma abordagem separada é a geração de dados sintéticos usando GPT-4 ou outros LLMs. Mas para isso, ainda são necessários dados reais como base (exemplos few-shot). Portanto, o scraping continua sendo a ferramenta básica de coleta de dados para a maioria dos projetos de ML.
Ferramentas para coleta de dados sem programação
A boa notícia: para coletar dados para conjuntos de dados de ML, não é necessário ser um desenvolvedor. Existem ferramentas prontas de no-code e low-code que conseguem trabalhar com proxies e contornar proteções básicas.
Scrapers no-code
| Ferramenta | Para que serve | Suporte a proxies | Dificuldade |
|---|---|---|---|
| Octoparse | Sites, tabelas, paginação | ✅ Sim | Baixa |
| ParseHub | Sites dinâmicos (JS) | ✅ Sim | Baixa |
| Apify | Atores prontos para 100+ sites | ✅ Integrado | Média |
| Bright Data IDE | Sites protegidos complexos | ✅ Integrado | Média |
| Scrapy Cloud | Scraping em grande escala | ✅ Através de middleware | Alta |
Para a maioria das tarefas de coleta de dados de ML, o Octoparse ou o Apify são suficientes. O Octoparse permite configurar visualmente o scraper em 20 a 30 minutos: você indica os elementos na página, configura a paginação, insere os proxies — e inicia a coleta. O resultado é exportado em CSV ou JSON, que pode ser usado imediatamente para treinamento.
O Apify é especialmente conveniente se você precisa fazer scraping de plataformas populares: eles têm "atores" prontos para Instagram, Twitter/X, Amazon, Google Maps, LinkedIn e dezenas de outros sites. Você simplesmente define os parâmetros — e obtém dados estruturados.
Qual tipo de proxy escolher para conjuntos de dados de ML
A escolha do tipo de proxy é um dos fatores-chave para o sucesso na coleta de dados. Um erro aqui pode ser caro: ou você será bloqueado no meio do caminho, ou pagará demais por capacidade desnecessária. Vamos analisar três tipos principais.
Proxies residenciais — para sites protegidos
Proxies residenciais são endereços IP de usuários domésticos reais. Para sistemas anti-bot, eles são indistinguíveis de um visitante comum. Isso os torna ideais para scraping de sites com proteção séria: marketplaces (Wildberries, Ozon), redes sociais, agregadores de notícias.
A principal vantagem para tarefas de ML: é possível coletar dados com geolocalização. Se você está treinando um modelo em conteúdo regional — escolha proxies da região desejada da Rússia ou de outro país. Isso é especialmente importante para tarefas de classificação geolocalizada ou análise de dialetos regionais.
Proxies móveis — para redes sociais e plataformas móveis
Proxies móveis utilizam IPs de operadoras móveis (4G/5G). Eles têm o mais alto nível de confiança nas plataformas — porque um IP móvel é realmente utilizado por centenas de pessoas ao mesmo tempo (todos os assinantes de uma torre se conectam através de um único IP). Isso significa que até mesmo a coleta ativa de dados de um IP móvel parece normal.
Proxies móveis são especialmente necessários se você está coletando dados do VKontakte, TikTok ou Instagram — plataformas que bloqueiam agressivamente IPs de data centers.
Proxies de data center — para fontes abertas e velocidade
Proxies de data center são rápidos e baratos. Eles não estão vinculados a usuários reais, portanto, são mais facilmente reconhecidos pelos sistemas de proteção. Mas para muitas tarefas de ML, isso é suficiente: se você está fazendo scraping da Wikipedia, arquivos abertos, GitHub, APIs públicas ou sites sem proteção séria — proxies de data center funcionam muito bem e custam significativamente menos.
Como escolher o tipo de proxy para sua tarefa de ML:
- Marketplaces (Wildberries, Ozon, Avito): proxies residenciais com rotação
- Redes sociais (VKontakte, Instagram, TikTok): proxies móveis
- Sites de notícias, fóruns, Wikipedia: proxies de data center
- Google Search, Yandex: proxies residenciais ou móveis
- Arquivos abertos, Common Crawl: proxies de data center
Cenários práticos: texto, imagens, preços, avaliações
Vamos analisar cenários específicos de coleta de dados para tipos populares de tarefas de ML — com indicação de fontes, ferramentas e tipo de proxy necessário.
Cenário 1: Conjunto de dados de avaliações para análise de sentimentos (NLP)
Tarefa: coletar 50.000 avaliações com notas do Wildberries para treinar um modelo de classificação de sentimentos.
Fonte: Wildberries — avaliações de produtos com notas de 1 a 5 estrelas (a marcação ideal já está presente).
Ferramenta: Octoparse ou script pronto em Python com a biblioteca requests.
Proxy: Residenciais com rotação — o Wildberries bloqueia ativamente IPs de data center.
Velocidade de coleta: 1 solicitação a cada 3 a 5 segundos com pausas — 50.000 avaliações em 2 a 3 dias.
O que você obtém: arquivo CSV com colunas: texto da avaliação, nota (1–5), categoria do produto, data. Este é um conjunto de dados pronto para treinamento — a marcação já está embutida nos dados.
Cenário 2: Conjunto de dados de imagens para visão computacional
Tarefa: coletar 100.000 imagens de produtos de várias categorias para treinar um modelo de classificação.
Fonte: Ozon, Yandex.Market — fotografias de produtos com categorias.
Ferramenta: Apify (há atores prontos para e-commerce) ou ParseHub.
Proxy: Proxies residenciais com rotação geográfica pela Rússia.
Importante: Baixe as imagens através de proxies, e não diretamente — servidores CDN também podem bloquear downloads em massa.
O que você obtém: Pastas com imagens, organizadas por categorias — uma estrutura que é aceita diretamente pelo ImageDataGenerator no Keras ou DataLoader no PyTorch.
Cenário 3: Corpora de texto para modelo de linguagem
Tarefa: coletar um grande corpo de textos em russo para fine-tuning de um modelo de linguagem em um tema específico — por exemplo, textos jurídicos ou artigos médicos.
Fonte: Fóruns temáticos, sites de notícias, Habr, portais profissionais.
Ferramenta: Scrapy Cloud ou Octoparse para coleta estruturada.
Proxy: Proxies de data center com rotação — a maioria dos sites de texto não tem proteção rígida, e a velocidade é mais importante que a anonimidade.
Velocidade: Com proxies de data center, é possível fazer 50 a 100 solicitações por minuto e coletar um milhão de documentos em poucos dias.
Cenário 4: Conjunto de dados de vagas para modelo de RH
Tarefa: coletar 200.000 vagas do hh.ru para treinar um modelo de recomendação ou classificação de profissões.
Fonte: hh.ru — eles têm uma API oficial, mas com limites. Para grandes volumes, é necessário fazer scraping.
Ferramenta: Apify (há um ator para hh.ru) ou Octoparse.
Proxy: Proxies residenciais — hh.ru é bem protegido e bloqueia IPs de data center.
O que você obtém: Dados estruturados: título da vaga, descrição, salário, requisitos, região, setor — um excelente conjunto de dados para NLP e sistemas de recomendação.
Como evitar bloqueios durante a coleta em massa de dados
Mesmo com bons proxies, você pode ser banido se não seguir as regras básicas. Aqui estão métodos comprovados que ajudam a coletar dados de forma estável e sem perdas.
Rotação de IP e sessões
A regra mais importante: não use um único IP para milhares de solicitações. Configure a rotação para que a cada 10 a 50 solicitações o IP mude. A maioria das ferramentas (Octoparse, Apify, Scrapy) suporta isso de forma nativa ao conectar um pool de proxies.
Além disso, altere os cookies de sessão junto com o IP — isso simula um novo usuário, e não apenas a troca de endereço.
Atrasos corretos entre solicitações
Adicione atrasos aleatórios entre solicitações — não fixos de 2 segundos, mas aleatórios de 1 a 5 segundos. Um intervalo fixo é facilmente detectado como padrão de bot. Um aleatório — simula o comportamento humano.
Para sites especialmente protegidos, adicione pausas mais longas: a cada 100 solicitações, faça uma pausa de 30 a 60 segundos. Isso reduz a velocidade, mas diminui radicalmente o risco de bloqueio.
Cabeçalhos de solicitações corretos
Configure o User-Agent para um navegador atual (Chrome, Firefox das últimas versões). Adicione cabeçalhos HTTP padrão: Accept-Language, Accept-Encoding, Referer. A ausência desses cabeçalhos é um sinal claro de bot para a maioria dos sistemas de proteção.
Coleta em horários não comerciais
Inicie a coleta em massa à noite (das 2:00 às 6:00, horário de Moscovo). Nesse horário, o tráfego nos sites é mínimo, os sistemas anti-bot são menos agressivos, e suas solicitações representam uma maior parte da carga — o que paradoxalmente reduz as suspeitas, já que há menos tráfego concorrente.
Tratamento de erros e tentativas de repetição
Configure o tratamento automático de códigos de resposta:
- 429 (Too Many Requests) — aumente o atraso, mude o IP, aguarde 5 a 10 minutos.
- 403 (Forbidden) — IP bloqueado, mude o proxy.
- 503 (Service Unavailable) — sobrecarga temporária do servidor, tente novamente em 1 a 2 minutos.
- 200 com captcha — é necessário um proxy de melhor qualidade (residencial em vez de data center).
Conformidade geográfica entre proxy e site
Use proxies do mesmo país que o site-alvo. Se você está fazendo scraping do Wildberries — escolha IPs russos. Se você está coletando dados de um site alemão — precisa de proxies alemães. A discrepância de geolocalização é um dos gatilhos mais comuns para bloqueios.
Checklist: configuração do pipeline de coleta de dados para ML
Use este checklist antes de iniciar qualquer coleta em larga escala de dados para um conjunto de dados:
📋 Preparação
- ☐ Verificar a existência de um conjunto de dados pronto no Kaggle / Hugging Face
- ☐ Estudar o robots.txt do site-alvo
- ☐ Determinar o volume de dados e a estrutura do conjunto de dados
- ☐ Escolher a ferramenta de scraping (Octoparse, Apify, Scrapy)
- ☐ Escolher o tipo de proxy para a tarefa (residenciais / móveis / data center)
⚙️ Configuração
- ☐ Conectar um pool de proxies com rotação de IP
- ☐ Configurar User-Agent (Chrome/Firefox atual)
- ☐ Adicionar cabeçalhos HTTP padrão
- ☐ Configurar atrasos aleatórios (1–5 segundos)
- ☐ Configurar tratamento de erros (429, 403, 503)
- ☐ Especificar o formato de exportação de dados (CSV, JSON, JSONL)
🧪 Teste
- ☐ Executar um teste com 100–500 registros
- ☐ Verificar a qualidade e integridade dos dados
- ☐ Garantir que não há bloqueios no volume de teste
- ☐ Verificar a velocidade de coleta e calcular o tempo para o conjunto de dados completo
🚀 Lançamento e monitoramento
- ☐ Iniciar durante a noite (02:00–06:00 MSK)
- ☐ Configurar notificações de erros
- ☐ Verificar periodicamente a qualidade dos dados coletados
- ☐ Salvar resultados intermediários (checkpoint a cada 10.000 registros)
🧹 Pós-processamento
- ☐ Remover duplicatas
- ☐ Limpar tags HTML e caracteres especiais dos textos
- ☐ Verificar o balanceamento das classes (para tarefas de classificação)
- ☐ Dividir em conjuntos de treino/validação/teste
- ☐ Salvar em um formato compatível com seu framework de ML
Conclusão
A coleta de dados para conjuntos de dados de ML não é uma tarefa única, mas um processo sistemático. As principais conclusões deste artigo: a escolha correta do proxy determina se você chegará ao final ou ficará preso em bloqueios. Proxies residenciais são necessários para marketplaces e agregadores protegidos, proxies móveis para redes sociais, e proxies de data center para fontes de texto abertas. Ferramentas como Octoparse e Apify permitem construir um pipeline sem programação. E seguir regras básicas (rotação de IP, atrasos aleatórios, cabeçalhos corretos) permite coletar centenas de milhares de registros sem perdas.
Se você planeja coletar dados de marketplaces, sites de notícias ou portais temáticos para treinar modelos de ML, recomendamos começar com proxies residenciais — eles garantem o máximo nível de confiança por parte dos sistemas de proteção e o mínimo risco de bloqueios, mesmo durante a coleta em larga escala de dados.