O que é e quando usar
O texto coleta seletiva é basicamente um recurso de extração de dados que permite isolar trechos específicos de um documento ou página web, ignorando tudo que é marcação, navegação, anúncios e conteúdo repetido. A diferença pro scraping tradicional é que ele já filtra o ruído automaticamente. Você não escreve regras de limpeza; o sistema identifica o conteúdo textual principal e o separa do resto. Eu usei pela primeira vez num projeto de monitoramento de editais públicos. O site da prefeitura tinha um layout ruim, com o texto do edital embaralhado em divs, tables e scripts inline. Tentar extrair com requisições simples dava lixo. Depois de configurar o texto coleta seletiva, eu puxava só o corpo do documento em cerca de 30 segundos por página, contra os 15 minutos que levava manualmente limpando o HTML bruto.
texto coleta seletiva na prática
Para rodar isso de forma funcional, você precisa de uma estrutura básica. No meu caso, eu uso um script Python com BeautifulSoup combinado a heurísticas de densidade textual. A lógica funciona assim: o parser mapeia cada bloco de texto, calcula a proporção entre palavras de conteúdo e marcadores de navegação (menu, footer, sidebar), e descarta os blocos com densidade abaixo de um limiar configurável. O resultado é um arquivo de saída limpo, geralmente em JSON ou CSV. O limiar padrão que eu uso é 0,4. Abaixo disso, o bloco é considerado ruído. Acima disso, é conteúdo. Esse número varia conforme o site. Sites governamentais costumam ter textos longos e poucas distrações, então um limiar de 0,3 já basta. Sites de notícias com muitos widgets e comentários laterais precisam de pelo menos 0,5 para não misturar o que é artigo com o que é barra lateral.
Um problema que eu encontrei recentemente foi com um site de licitações que usava texto-coluna em tables ocultas para exibição mobile. O algoritmo interpretou as células como conteúdo principal porque a densidade textual era alta. O resultado: metade das extracões vinha com dados de tabela quebrados, linhas incompletas e formatação danificada. A solução foi adicionar uma camada pós-processamento que detecta tabelas com mais de cinco linhas e menos de trinta palavras por célula, e as marca como estruturadas, não como corpo de texto. Isso resolveu em dois dias de trabalho que antes eu estimava em uma semana. A ferramenta em si não tem interface gráfica. É tudo via linha de comando. Você passa a URL de entrada, define o limiar de densidade, escolhe o formato de saída, e o script roda. Eu costumo executar de forma batch, passando um arquivo de entrada com cinquenta URLs por vez. O processamento leva entre oito e doze minutos, dependendo do tempo de resposta dos servidores de origem.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Há limitações que você precisa considerar antes de confiar no resultado. O método falha completamente em páginas que usam JavaScript para renderizar o conteúdo principal. Se o texto só aparece após interação do usuário ou carregamento dinâmico, o parser vê uma página vazia e retorna nada. Nesses casos, a alternativa é usar um headless browser como Puppeteer ou Selenium antes de aplicar a extração. Eu faço isso em dois passos: primeiroRenderizo a página com o headless, salvo o HTML estático, e só depois aplico o texto coleta seletiva. Esse workaround dobra o tempo de processamento, mas evita a perda de dados. Outro ponto fraco é a variação de idioma. O filtro de densidade textual foi calibrado para português brasileiro. Em documentos em espanhol ou inglês, a contagem de palavras e a distribuição de marcadores muda. O limiar de 0,4 passa a ser agressivo demais e corta trechos válidos. Para línguas diferentes, recomendo ajustar para 0,35 e testar com dez páginas de amostra antes de rodar o batch completo.
Se você quer baixar o script, ele está disponível num repositório aberto. O link direto é para o arquivo main.py na pasta /extractors do repo. A instalação requer Python 3.10+, bibliotecas requests, beautifulsoup4 e lxml. A configuração é feita editando o arquivo config.json com os parâmetros de limiar, formato de saída e timeouts de conexão. A principal vantagem comparada a ferramentas comerciais de extração é o controle total sobre o que entra e o que sai. Você vê cada bloco descartado e cada bloco mantido. Ferramentas pagas fazem isso de forma fechada e você não tem visibilidade do critério de decisão. Por outro lado, a manutenção é sua. Quando um site-alvo muda o layout, você que precisa ajustar os selectors ou os parâmetros de densidade. Não há suporte técnico para resolver isso.
Para quem está começando, o recomendável é testar com sites simples primeiro. Portal de transparência, Diário Oficial, site de universidade. São estruturas previsíveis e o algoritmo performa bem. Depois que o limiar estiver ajustado e o output validado, aí sim parta para sites mais complexos. Eu sempre faço uma validação manual de cinco páginas antes de rodar o batch completo. Gasta quinze minutos que economizam horas de limpeza posterior. O texto coleta seletiva não é bala de prata. Ele funciona bem para conteúdo textual estruturado em HTML estático. Para PDFs, imagens ou páginas com carregamento dinâmico pesado, a eficácia cai drasticamente. Nesses cenários, o caminho é combinar com OCR ou com raspagem baseada em headless browser, e só então aplicar o filtro de densidade. O processo fica mais longo, mas o resultado final tende a ser limpo o suficiente para uso direto em análise de dados.