Обзор подхода
Извлечение email-адресов из веб-сайтов является важной задачей во многих приложениях, таких как маркетинг, продажи и исследование рынка. Однако большинство инструментов для извлечения email-адресов используют простые регулярные выражения, которые могут не обеспечить точных результатов. В этой статье мы рассмотрим более эффективный подход, который использует несколько регулярных выражений, валидацию DNS MX-записей и фильтрацию ложных положительных результатов.
Регулярные выражения для извлечения email-адресов
Для начала мы можем использовать простое регулярное выражение, которое ловит большинство форматов email-адресов:
const EMAIL_REGEX = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;
Это выражение ловит около 99% форматов email-адресов. Однако сырые результаты необходимо очистить от лишних символов и фильтровать, чтобы исключить ложные положительные результаты.
Очистка email-адресов
Для очистки email-адресов мы можем использовать функцию, которая преобразует все символы в нижний регистр, удаляет лишние пробелы и фильтрует результаты, чтобы исключить файлы изображений и другие ложные положительные результаты:
function cleanEmails(rawEmails) {
return [...new Set(rawEmails)]
.map(e => e.toLowerCase().trim())
.filter(e => !e.endsWith(".png"))
.filter(e => !e.endsWith(".jpg"))
.filter(e => !e.includes("example.com"));
}
Валидация доменов с помощью MX-записей
Для валидации доменов мы можем использовать MX-записи DNS. Мы можем использовать модуль dns в Node.js, чтобы выполнить запрос на MX-запись домена:
import dns from "dns/promises";
async function validateDomain(domain) {
try {
const mx = await dns.resolveMx(domain);
return mx.length > 0;
} catch {
return false;
}
}
Обнаружение провайдера email
Мы также можем обнаружить провайдера email, анализируя MX-записи домена:
function detectProvider(mxRecords) {
if (mxRecords.some(r => r.exchange.includes("google"))) return "Google Workspace";
if (mxRecords.some(r => r.exchange.includes("outlook"))) return "Microsoft 365";
if (mxRecords.some(r => r.exchange.includes("protonmail"))) return "ProtonMail";
return null;
}
Полный рабочий процесс
Полный рабочий процесс извлечения email-адресов из веб-сайта включает в себя следующие шаги:
- Получение HTML-страницы веб-сайта
- Извлечение всех строк, похожих на email-адреса, с помощью регулярного выражения
- Очистка и дедупликация email-адресов
- Валидация каждого домена с помощью MX-записей
- Обнаружение провайдера email
- Возвращение структурированных результатов
Бесплатные инструменты
Существуют бесплатные инструменты, которые могут автоматизировать этот процесс, такие как Email Extractor и Email Validator, доступные в Apify Store. Эти инструменты могут помочь вам извлечь email-адреса из веб-сайтов и проверить их на действительность.