Como extrair todos os e-mails e links de um texto bagunçado
Para tirar todos os endereços de e-mail de uma página ou exportação bagunçada, use um padrão que reconheça o formato de um endereço e depois limpe a pontuação que fica grudada nele. Um padrão simples acaba pegando o ponto final ou a vírgula no fim de uma frase, e deixa passar endereços escritos de forma ofuscada. Confira a lista com os próprios olhos antes de usá-la.
Extrair e-mails e linksTirar e-mails de uma páginaUse de graçaPor que os padrões simples erram
Um padrão comum é uma sequência de caracteres sem espaço, um sinal de @ e outra sequência de caracteres sem espaço. É fácil de escrever, mas tem duas falhas.
Ele captura demais. Na frase "Fale com [email protected], ou [email protected]." o padrão "\S+@\S+" retorna "[email protected]," com a vírgula e "[email protected]." com o ponto final. Esses não são endereços válidos na sua lista, e uma mala direta ou um filtro de spam vai rejeitá-los.
Ele captura de menos. Endereços escritos como "ana [at] example [dot] com" ou "ana at example dot com" não são encontrados de jeito nenhum. Quem escreve assim quer evitar coleta automática, e algumas páginas usam o mesmo truque pelo mesmo motivo. Troque as palavras primeiro e só depois extraia.
Um padrão melhor aceita, à esquerda, apenas os caracteres que um endereço pode ter e, à direita, apenas um domínio com letras. O padrão "[\w.+-]+@[\w-]+\.[\w.-]+" é um bom ponto de partida. Mesmo assim, ele pode manter um ponto final depois do domínio quando o endereço termina a frase, porque a última parte do domínio aceita pontos. Remova um ponto final do fim de cada resultado. A ferramenta extrair e-mails e links já descarta a pontuação do fim, então essa etapa importa sobretudo quando você escreve o seu próprio padrão.
Veja o que esse padrão retorna para os dois exemplos acima:
- "Escreva para [email protected]." gera "[email protected]." com o ponto final, que precisa ser removido.
- "Fale com [email protected], ou [email protected]." gera "[email protected]" e "[email protected].", então a mesma limpeza se aplica.
Os links funcionam do mesmo jeito
As URLs têm o mesmo problema. Um link no fim de uma frase costuma trazer ponto final, vírgula ou parêntese de fechamento. Um link entre parênteses, como (veja https://example.com/pagina), pode pegar o parêntese de fechamento se o padrão for guloso. Limpe a pontuação do fim e depois confira se cada link abre no navegador.
Os links também podem ser relativos, como /contato, que uma extração de e-mails vai ignorar. Decida se você precisa apenas de endereços absolutos e diga isso ao fazer a extração.
Etapas que funcionam na maioria das exportações
- Troque primeiro as formas ofuscadas, com localizar e substituir: "[at]" vira @ e "[dot]" vira ponto final, mas só quando você vê que o trecho é um endereço.
- Cole o texto, ou o código-fonte HTML da página, em Texto ou HTML na ferramenta de extração. Os endereços e links são separados, e a pontuação do fim é descartada.
- Mantenha Remover duplicados marcado. Ele ignora maiúsculas nos endereços de e-mail, então [email protected] e [email protected] contam como um só. Para uma lista que você já tem, remover linhas duplicadas faz o mesmo trabalho.
- Marque Ordenar de A a Z se quiser a lista em ordem.
- Leia a lista final. Procure valores que não são endereços, como nomes de arquivos de imagem que por acaso têm um sinal de @.
Um exemplo prático: uma página traz "Vendas: [email protected]", "[email protected]." e "Suporte: [email protected]". A extração retorna três resultados. Depois de remover o ponto final e os duplicados sem considerar maiúsculas, sobram dois endereços: [email protected] e [email protected]. Se quiser a lista em ordem, marque Ordenar de A a Z no extrator ou use ordenar linhas.
Mantenha a lista limpa e dentro da lei
Endereços de e-mail são dados pessoais em muitos lugares, e há regras contra spam em vários países. Coletar um endereço de uma página pública não dá, automaticamente, permissão para enviar e-mails para ele. A LGPD, no Brasil, e o GDPR, na União Europeia, são exemplos de leis de proteção de dados, e a lei CAN-SPAM, dos Estados Unidos, trata de mensagens em massa. Elas exigem coisas diferentes. Estas informações são gerais e não constituem aconselhamento jurídico. Antes de enviar qualquer coisa, verifique as regras que valem para você e para as pessoas da lista, e mantenha uma opção de descadastro em mensagens em massa.
Casos especiais
- Texto que não é endereço. Trechos como [email protected] podem ser capturados. Remova qualquer coisa que termine em extensão de arquivo.
- Endereços em uma imagem. Leia antes uma captura de tela com a ferramenta de imagem para texto e depois extraia do resultado. O guia de captura de tela e foto explica como obter uma leitura limpa.
- Caracteres ocultos. Um espaço de largura zero dentro de um endereço quebra a correspondência, e o endereço fica de fora. Remova os caracteres ocultos antes da extração se um endereço conhecido estiver faltando. O guia de caracteres ocultos explica de onde eles vêm.
- Endereços codificados. Algumas páginas escondem endereços em entidades HTML, como @ para @. Decodifique o texto da página primeiro, senão o padrão não vai enxergar o sinal de @.
- Exportações longas. Em arquivos grandes, extraia para um arquivo e compare a contagem com o número de linhas que você espera.
Respostas rápidas
Por que minha extração de e-mails traz um ponto final no fim?
Um ponto é permitido dentro de um domínio, então um padrão que aceita pontos pode pegar o que termina a frase. Remova um ponto final do fim de cada resultado.
Alguma ferramenta encontra endereços escritos como "nome at example dot com"?
Não de forma confiável, sem uma etapa de substituição. Converta as palavras em símbolos antes, mas só onde o texto claramente for um endereço, para que frases comuns não sejam alteradas.
É legal enviar e-mail para todos os endereços que extraí de uma página web?
Depende de onde você e os destinatários estão e do conteúdo da mensagem. Regras de anti-spam e de privacidade se aplicam, então verifique antes. Estas informações são gerais e não constituem aconselhamento jurídico.
Traduzido do Original em inglês com auxílio de IA.
Comentários
Ainda não há comentários. Seja o primeiro.


