Парсинг почт с сайтов

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Приветствую!

Предлагаю вашему вниманию простой шаблон на C# для сбора Email-ов с сайтов.

Парсил на заказ контактые данные с каталогов, 2гис и т.д. И обычно почт было меньше чем сайтов, а как раз они и были больше всего нужны заказчику. Поэтому решил написать небольшой шаблон для сбора email-ов.
Даём шаблону список сайтов и получаем список адресов электронной почты.
Парсер работает через браузер и больше подходит для сбора с русскоязычных сайтов.

Алгоритм:
  • Шаблон берёт ссылку на сайт, переходит на него, ищет email на главной странице.
  • Если нашёл записывает в файл, если нет, то ищет страницу Контакты.
  • Переходит на неё, если есть, и ищет email на ней.
  • Если находит email, записывает его в список, а если не находит то огорченно сообщает нам, что email не найден, и записывает сайт в чёрный список.
Конечно почты собираются не со всех сайтов. Процент собираемости более 50%. Специально для конкурса проводил тесты на списке сайтов с megastock.ru получалось около 55-60% + присутствует небольшой процент мусора около 3-5 %.
При парсинге в 45 потоков без картинок 1000 сайтов обрабатывались примерно за 20 минут. Если отключать java-скрипты и прочее, то время составило 10 минут, но адресов электронной почты собиралось примерно на 5-15% меньше.

Никаких настроек нет, вместе с шаблоном идёт 3 текстовых файла:
  • WebSite -список сайтов;
  • Emails - список почт;
  • BadSite - список сайтов, с которых почты собрать не удалось.
 
Категория
Парсинг

Вложения

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

orka13

Client
Регистрация
07.05.2015
Сообщения
1 696
Благодарностей
1 578
Баллы
113
В такой же ситуации. Собрал базу организаций с Яндекс.Карт, там раньше было поле с почтой, а теперь убрали, придется парсить с сайтов. Жаль только, что у вас не на запросах, но понимаю, что новичку это труднее освоить. Спасибо и за такой вариант, попробую изучить алгоритм.

UPD: Блин, а шаб то на трех кубиках C# :-)))))). Отсюда вопрос к ТС: может вариант с работой через браузер обусловлен не низким уровнем знаний, а тем, что на гет-запросах меньше почт находило на странице? Ну типа часть сайтов скрывают скриптами адрес почты от парсинга, и только в браузере подгружают пользователю... Или сравнений не проводили?
 
Последнее редактирование:
  • Спасибо
Реакции: Neval

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
UPD: Блин, а шаб то на трех кубиках C# :-)))))). Отсюда вопрос к ТС: может вариант с работой через браузер обусловлен не низким уровнем знаний, а тем, что на гет-запросах меньше почт находило на странице? Ну типа часть сайтов скрывают скриптами адрес почты от парсинга, и только в браузере подгружают пользователю... Или сравнений не проводили?
Хотел сделать на запросах, т.к. скорость конечно оставляет желать лучшего, специально к конкурсу уже начал на делать шаблон. Без проблем собирать регуляркой почты с главной страницы в ответе на гет запрос, но встала проблема с ссылкой на страницу контактов, на главной не всегда есть почта. Ссылка на сайтах на страницу контакты отличается и тут у меня трудности. Обычным способом элемент находиться в большинстве случаев везде, обычно страница называется Контакты. Думал сделать как-то с помощью HtmlAgilityPack и Xpatch, но знаний и опыта нет пока в этом, да и сроки поджимали, поэтому решил оставить браузерную версию.
Но переделать на Get запросы планирую.
 
Последнее редактирование:
  • Спасибо
Реакции: ddw999 и orka13

Tnyrtin

Client
Регистрация
12.05.2015
Сообщения
73
Благодарностей
8
Баллы
8
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
1 696
Благодарностей
1 578
Баллы
113
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
А зачем? Главная почта сайта есть либо на главной, либо на странице контактов. А ссылка на страницу контактов всегда есть на главной. Вот и строите свой алгоритм по поиске ссылки на "контактную страницу" в коде "главной".
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 795
Благодарностей
3 452
Баллы
113
Посоветую простой "финт" ушами - чтобы не искать страницу контактов (чтоб не было зависимости от языка) - достаточно будет просто спарсить все ссылки, которые будут на главной странице) И уже в них искать почту. Да, будет чуть больше почт в теории собрано, но разве это плохо? :-)
 
  • Спасибо
Реакции: SergSh, Neval и orka13

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
В этом шаблоне никак, он заточен на поиск по списку сайтов заходя максимум на 2 страницы сайта. Для одного сайта лучше сделать отдельный шаблон, сначала собрать ссылки, а потом get запросами собрать email. В пределах одного сайта это легко реализуется. Можно конечно собрать ссылки с сайта и скормить этому шаблону, но будет неэффективно на мой взгляд.
 

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Посоветую простой "финт" ушами - чтобы не искать страницу контактов (чтоб не было зависимости от языка) - достаточно будет просто спарсить все ссылки, которые будут на главной странице) И уже в них искать почту. Да, будет чуть больше почт в теории собрано, но разве это плохо? :-)
Можно и такой вариант реализовать, тогда на запросах будет легче сделать, единственное если попадётся сайт с большим количеством ссылок много лишних запросов будет.
 

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Сделал ещё одну браузерную версию шаблона для более полного сбора почт с сайтов - Collecting_Emails_Full.
Если в первой версии искался только 1 email на главной или на странице контактов, то этот шаблон собирает все почты с главной и со страниц контакты. Часто на странице контактов есть дополнительные email-ы подразделений, отдельных лиц, отделов и т.д. теперь шаблон соберёт их всех. Очистит почты от дублей и внесёт в конечный файл.
Не обошлось без минусов. Время обработки 1000 сайтов при 45 потоках увеличилось с 20 до 28 минут, но почт при этом было собрано почти в 2 раза больше.

Теперь буду делать шаблон на гет запросах.
 

Вложения

Последнее редактирование:

Kirillzenp

Client
Регистрация
27.02.2018
Сообщения
97
Благодарностей
1
Баллы
8
Зачем эти почты? Для чего это используется?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
1 696
Благодарностей
1 578
Баллы
113
Зачем эти почты? Для чего это используется?
Автору темы для дополнения своей базы организаций 2гис, мне для дополнения своей базы Яндекс.Карт, среднестатистическим заинтересовавшимся – для сбора целевой аудитории под емеил-рассылку.
 
  • Спасибо
Реакции: Kirillzenp

Kirillzenp

Client
Регистрация
27.02.2018
Сообщения
97
Благодарностей
1
Баллы
8
Автору темы для дополнения своей базы организаций 2гис, мне для дополнения своей базы Яндекс.Карт, среднестатистическим заинтересовавшимся – для сбора целевой аудитории под емеил-рассылку.
Последний вопрос, что за базы организаций, что вам это дает?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
1 696
Благодарностей
1 578
Баллы
113
:-). Я собираю чтобы популяризировать свой шаблон по парсингу, и чтобы потом продавать эту базу. Ну или рассылкой займусь по тем адресам что в ней.
 
  • Спасибо
Реакции: Kirillzenp

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Зачем эти почты? Для чего это используется?
В основном используются для дальнейшей рассылки коммерческого предложения, предложения услуг или ещё чего подобного.
 

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Сделал версию шаблона полностью на гет запросах + использовал параллельный цикл.
Идея шаблона такая: я собрал с 5000 сайтов ссылки на страницы "Контакты". Часто страница имеет вид сайт.ru/contacts. Я проанализировал список страниц и составил список наиболее встречающихся окончаний для страниц "Контакты".
Отправляем запрос на сайт, ищем там почты, а потом в параллельном цикле отправляем запросы на возможные страницы "Контакты" и собираем почты с ответов. Далее чистим от дублей, отсеиваем некоторый мусор и записываем в конечный файл наши email-ы.
Т.к. шаблон использует параллельный цикл, необходимо в директивах прописать
Код:
using System.Threading.Tasks;
В папке с шаблоном есть картинка.
Время обработки 1000 сайтов значительно сократилось и стало равным 7-8 минут при 45 потоках. Но количество собранных почт немного сократилось. Если браузерный шаблон Collecting_Emails_Full собрал с 1000 сайтов около 1050 почт, то этот шаблон с этих же сайтов - 960.
Также теперь когда ссылки на сайты закончатся, шаблон почистит от дублей итоговый файл с почтами.
Порядок работы остался таким же. С шаблоном идут текстовые файлы:
  • BadSite - список сайтов с которых почты не были собраны
  • Emails - собранные почты
  • Website - ссылки на сайты
  • Contacts - список с окончаниями ссылок страниц "Контакты". Вы можете как добавить туда свои окончания так и удалить их
Закидываем ссылки в файл Website, запускаем шаблон и по окончании работы получаем готовый список почт.
 

Вложения

CmauJluk

Client
Регистрация
25.12.2017
Сообщения
196
Благодарностей
22
Баллы
18

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Я пробовал https://2gis.ru/ и леди майл
С lady. mail. ru шаблон собрал 10 почт. Cайты нужно указывать без https:// и http:// иначе будет собирать только с главных страниц почты, заметил такое ограничение сейчас.
Но я так понял Вы хотели собрать почты с компаний которые есть на сайте 2гис, если так, то этот шаблон не для этого, нужно конкретно для 2 гис. Мой же шаблон собирает почты с главной страницы сайта и со страницы Контакты.
 

CmauJluk

Client
Регистрация
25.12.2017
Сообщения
196
Благодарностей
22
Баллы
18
С lady. mail. ru шаблон собрал 10 почт. Cайты нужно указывать без https:// и http:// иначе будет собирать только с главных страниц почты, заметил такое ограничение сейчас.
Но я так понял Вы хотели собрать почты с компаний которые есть на сайте 2гис, если так, то этот шаблон не для этого, нужно конкретно для 2 гис. Мой же шаблон собирает почты с главной страницы сайта и со страницы Контакты.
Понял спасибо
 

Quant

Client
Регистрация
13.12.2016
Сообщения
11
Благодарностей
0
Баллы
1
Отличный шаб!
Подскажите что нужно добавить (и к какой строке :-)) чтобы в файл записывались не только почты, но и сайт с которого почта взята (или даже страница)
Например:
site.ru;[email protected]
 

An_To_Ha

Client
Регистрация
27.09.2010
Сообщения
19
Благодарностей
3
Баллы
3
Что то у меня ошибки во втором кубике показывает(


В логе пишет:




Как это победить, подскажите
 
Последнее редактирование:

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Отличный шаб!
Подскажите что нужно добавить (и к какой строке :-)) чтобы в файл записывались не только почты, но и сайт с которого почта взята (или даже страница)
Например:
site.ru;[email protected]
В третьем кубике можно заменить 20-ю строчку на project.Lists["Emails"].Add(project.Variables["Url"].Value + ";" + email);
 
  • Спасибо
Реакции: auva и Quant

Vanshap

Новичок
Регистрация
24.07.2018
Сообщения
4
Благодарностей
0
Баллы
1
Друзья, такой вопрос, как мне запустить данный парсер?
Я человек далекий от программирования, но как менеджеру мне это интересно!
 

Neval

Client
Регистрация
22.07.2015
Сообщения
23
Благодарностей
49
Баллы
13
Друзья, такой вопрос, как мне запустить данный парсер?
Я человек далекий от программирования, но как менеджеру мне это интересно!
Нужна программа ZennoPoster (хотя бы демо версия). скачать шаблон из данной темы и запустить его в программе.
Более подробно о запуске шаблона можно прочитать в справке https://zennolab.com/wiki/ru:project-execution
шаблоном идут текстовые файлы:
  • BadSite - список сайтов с которых почты не были собраны
  • Emails - собранные почты
  • Website - ссылки на сайты
  • Contacts - список с окончаниями ссылок страниц "Контакты". Вы можете как добавить туда свои окончания так и удалить их
Закидываем ссылки в файл Website, запускаем шаблон и по окончании работы получаем готовый список почт.
 

Vanshap

Новичок
Регистрация
24.07.2018
Сообщения
4
Благодарностей
0
Баллы
1
Нужна программа ZennoPoster (хотя бы демо версия). скачать шаблон из данной темы и запустить его в программе.
Более подробно о запуске шаблона можно прочитать в справке https://zennolab.com/wiki/ru:project-execution
шаблоном идут текстовые файлы:
  • BadSite - список сайтов с которых почты не были собраны
  • Emails - собранные почты
  • Website - ссылки на сайты
  • Contacts - список с окончаниями ссылок страниц "Контакты". Вы можете как добавить туда свои окончания так и удалить их
Закидываем ссылки в файл Website, запускаем шаблон и по окончании работы получаем готовый список почт.
Спасибо большое, а как с Вами можно связаться? Нужно сделать программу для парсинга
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)