Python para Web Scraping: Como Identificar Dados de Contato Rapidamente com Regex
Python para Web Scraping: Como Identificar Dados de Contato Rapidamente com Regex
Extrair dados de contato não estruturados em grandes volumes de texto é um desafio comum em automações de scraping, higienização de cadastros e triagem de mensagens. Este script utiliza o módulo nativo
re (Expressões Regulares) para varrer qualquer string e extrair instantaneamente listas de e-mails e números de telefone formatados. A solução resolve a busca manual repetitiva e padroniza a coleta de dados de contatos de forma automatizada.Python
import re
def extrair_contatos(texto: str) -> dict:
"""Identifica e extrai todos os e-mails e telefones contidos em um bloco de texto."""
# Regex para capturar e-mails (padrão padrão usuario@dominio.com)
padrao_email = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
# Regex para telefones nos formatos: (11) 99999-9999, 11 99999-9999 ou 99999-9999
padrao_telefone = r'\(?\d{2}\)?\s?\d{4,5}[-\s]?\d{4}'
# re.findall retorna uma lista com todas as ocorrências encontradas
emails_encontrados = re.findall(padrao_email, texto)
telefones_encontrados = re.findall(padrao_telefone, texto)
# Retorna os contatos limpos e sem duplicatas
return {
"emails": list(set(emails_encontrados)),
"telefones": list(set(telefones_encontrados))
}
# --- Exemplo de uso prático ---
if __name__ == "__main__":
massa_de_texto = """
Olá, favor entrar em contato com suporte@empresa.com.br ou pelo setor
comercial no e-mail contato.vendas@empresa.com.
Ligue para (11) 98765-4321 ou envie mensagem para 41 99999-8888.
Atendimento secundário: suporte@empresa.com.br.
"""
resultado = extrair_contatos(massa_de_texto)
print("E-mails extraídos:", resultado["emails"])
print("Telefones extraídos:", resultado["telefones"])
Pontos-chave
re.findall(): Busca todas as correspondências do padrão Regex no texto e retorna uma lista simples de strings contendo as capturas.- Remoção de Duplicatas com
set(): Ao converter o resultado dere.findallpara um conjunto (set), descartamos automaticamente contatos repetidos que apareçam múltiplas vezes no mesmo texto. - Flexibilidade do Padrão de Telefones: A expressão
\(?\d{2}\)?\s?\d{4,5}[-\s]?\d{4}acomoda variações comuns de formato, como presença ou ausência de DDD entre parênteses, hífen e o nono dígito. - Escape de Caracteres Especiais: Símbolos como pontos (
.) e parênteses ((e)) têm significados especiais no Regex e devem ser escapados com barra invertida (\.,\() quando o objetivo for validar o caractere literal.
Sugestões de Títulos para o Blog
- Como Extrair E-mails e Telefones de Textos com Python e Expressões Regulares (
re) - Python para Web Scraping: Como Identificar Dados de Contato Rapidamente com Regex
- Script Python Rápido: Minerando E-mails e Números de Telefone em Textos Não Estruturados

Comentários
Postar um comentário