Парсинг email адресов с использованием базы данных

Discussion in 'Девятый конкурс статей' started by denchik, May 15, 2018.

  1. denchik

    denchik Client

    Joined:
    May 26, 2017
    Messages:
    44
    Likes Received:
    59
    Емаил маркетинг - одно из очень популярных и перспективных направлений. Хочу поделиться своими наработками по этой теме. Это не кнопка бабло, но это поможет вам подстроить шаблон под свою задумку или взять некоторые технические реализации.

    В целом спарсить почту с сайта не очень сложно, но не всегда email на главной странице и не скрыт. Поэтому шаблон работает по такому алгоритму:

    1. Парсит title. Если он пустой, то нет смысла дальше тратить время на этот сайт. Добавляем домен в BL (black list).

    2. Пытаемся найти почту на главной странице. Если нашли - сохраняем и переходим к следующему домену.

    3. Если на главной не нашли, ищем все ссылки, похожие на страницу с контактами. Пробуем спарсить емаил на этой странице. В первую очередь пытаемся найти почту на расположенную на собственном домене (если парсим site.ru, то пытаемся сначала найти почту вида, например, [email protected]).

    4. Если не получилось, сохраняем ссылку на эту страницу. Это пригодится, если нужно максимально проработать базу. В дальнейшем можно написать шаблон, который будет заходить на эти страницы и отправлять письмо через форму обратной связи. Также пытаемся найти ссылку, которая в коде не полным адресом записана, а частично, например "/contact".

    5. Сохраняем результат в базу данных. Мне кажется, что с базой данных сложнее настроить шаблон, особенно новичку, но в дальнейшем работа происходит значительно быстрее, все хранится в одном месте, легко и быстро вытаскивать данные, а также это отличный каркас для дальнейшем работы в промышленных масштабах, когда один шаблон парсит домены и заносит в базу, другой берет из базы и парсит емаил. Третий - рассылает письма и т. д.

    Вот так выглядит шаблон:

    Вид шаблона.png


    Для работы нескольких шаблонов удобно использовать столбец "Статус". Например, сборщик доменов добавил домен в базу и присвоил статус 0. Парсер адресов, спарсил емаил, добавил их в базу и поставил статус 1. Рассыльщик взял почту, отправил и присвоил статус 2 и т. д.

    Рекомендую для работы с базой данных использовать программу Navicat.

    P. S. Для начинающих и тех, кто не хочет работать с базой данных не составит труда заменить кубики базы данных, на работу с Excel таблицами или списками.
     
    Last edited: May 15, 2018
    k1nop, LaGir, pg2016 and 5 others like this.
  2. radv

    radv Client

    Joined:
    May 11, 2015
    Messages:
    274
    Likes Received:
    130
  3. VladZen

    VladZen Administrator Staff Member

    Joined:
    Nov 5, 2014
    Messages:
    14,778
    Likes Received:
    3,623
    Стоит добавить пару скринов для более интересной подачи статьи...
     
  4. denchik

    denchik Client

    Joined:
    May 26, 2017
    Messages:
    44
    Likes Received:
    59
    Шаблон на кубиках и лишь несколько элементов на C#, работает с базой данных, собирает ссылку на контактную форму, можно использовать как каркас для комплекса, начиная от сбора домена и заканчивая рассылкой. Цель показать варианты исполнения, подтолкнуть на генерацию новых идей. Да тема частично повторяется, но по себе знаю, что когда только начинал знакомится с программой, то один вариант был по душе, а другой трудно давался для понимания. Также на конкурсных статьях находил для себя идеи на основании опыта и реализаций других пользователей.
     
  5. denchik

    denchik Client

    Joined:
    May 26, 2017
    Messages:
    44
    Likes Received:
    59
  6. kosstyan

    kosstyan Client

    Joined:
    Dec 26, 2015
    Messages:
    3
    Likes Received:
    0
    Здравствуйте. Спасибо за Ваш труд но шаблон не работает. В файле создания базы данных указан такой код:

    -- ----------------------------
    -- Table structure for main
    -- ----------------------------
    DROP TABLE IF EXISTS `main`;
    CREATE TABLE `main` (
    `status` varchar(255) DEFAULT NULL,
    `email` varchar(255) DEFAULT NULL,
    `site` varchar(255) DEFAULT NULL,
    `id` int(255) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    при этом в самом шаблоне, к примеру в блоке "Добавляем в БД найденный емаил" прописан такой запрос:

    INSERT INTO main (`status`, `email`, `url`, `title`, `url_contact`) VALUES (1, '{-Variable.email-}', '{-Variable.url-}', '{-Variable.title-}', '{-Variable.url_contact-}');

    Как видно тут как минимум не совпадение полей.
    Так же когда шаблон ищет почту с совпадением адреса сайта никак не убирается с домена https:// www и тп. То есть если в списке сайтов есть эти символы почта найдена не будет.
     
  7. kosstyan

    kosstyan Client

    Joined:
    Dec 26, 2015
    Messages:
    3
    Likes Received:
    0
    Так же на попадает найденная почта если она не принадлежит домену сайта. Пытаюсь понять почему, сам новичок в зенке и сложно пока разобраться.
     
  8. kosstyan

    kosstyan Client

    Joined:
    Dec 26, 2015
    Messages:
    3
    Likes Received:
    0
    Еще мы в блоке "Пробуем найти ссылку на страницу контактов без указания домена (вида a href = "/contacty")" находим страницу контактов после чего сразу идем на выходной блок вместо того, чтобы поискать на найденной странице почту.
    Вы сами шаблон проверяли? У Вас он работал?

    ЗЫ: Вопросы решил сам, спасибо за пример. Если кому нужно будет могу выложить доработанный шаблон.
     
    Last edited: Aug 8, 2018
  9. bogdat

    bogdat Новичок

    Joined:
    Dec 27, 2013
    Messages:
    1
    Likes Received:
    0
    просьба если не трудно поделиться доработанным шаблоном , только учусь ,заранее спасибо.
     
  10. smartwisard

    smartwisard Client

    Joined:
    Jan 17, 2017
    Messages:
    665
    Likes Received:
    41
    Я тоже только учусь и есть вопрос!
    Как потом рассылку делать будешь, ведь прокси дорого стоят!
    Меня сейчас стоимость проксей ipv4 заставляет бросить купленный рассыльщик.
    Как новичёк, кроме мобильных проксей решение найти не смог.
     

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)