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

Neval

Client
Регистрация
22.07.2015
Сообщения
24
Реакции
54
Баллы
13
Приветствую!

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

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

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

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

Вложения

  • готово.jpg
    готово.jpg
    75,2 KB · Просмотры: 1 618
  • готово.jpg
    готово.jpg
    75,2 KB · Просмотры: 10 195
  • Сбор почт с сайтов.rar
    Сбор почт с сайтов.rar
    22,6 KB · Просмотры: 2 156
В такой же ситуации. Собрал базу организаций с Яндекс.Карт, там раньше было поле с почтой, а теперь убрали, придется парсить с сайтов. Жаль только, что у вас не на запросах, но понимаю, что новичку это труднее освоить. Спасибо и за такой вариант, попробую изучить алгоритм.

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

Хотел сделать на запросах, т.к. скорость конечно оставляет желать лучшего, специально к конкурсу уже начал на делать шаблон. Без проблем собирать регуляркой почты с главной страницы в ответе на гет запрос, но встала проблема с ссылкой на страницу контактов, на главной не всегда есть почта. Ссылка на сайтах на страницу контакты отличается и тут у меня трудности. Обычным способом элемент находиться в большинстве случаев везде, обычно страница называется Контакты. Думал сделать как-то с помощью HtmlAgilityPack и Xpatch, но знаний и опыта нет пока в этом, да и сроки поджимали, поэтому решил оставить браузерную версию.
Но переделать на Get запросы планирую.
 
Последнее редактирование:
  • Спасибо
Реакции: ddw999 и orka13
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
 
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
А зачем? Главная почта сайта есть либо на главной, либо на странице контактов. А ссылка на страницу контактов всегда есть на главной. Вот и строите свой алгоритм по поиске ссылки на "контактную страницу" в коде "главной".
 
Посоветую простой "финт" ушами - чтобы не искать страницу контактов (чтоб не было зависимости от языка) - достаточно будет просто спарсить все ссылки, которые будут на главной странице) И уже в них искать почту. Да, будет чуть больше почт в теории собрано, но разве это плохо? :)
 
Хочу уточнить, как реализован обход всех страниц на сайте?
Допустим на сайте порядка 10000 страниц, как алгоритм поиска email.
В этом шаблоне никак, он заточен на поиск по списку сайтов заходя максимум на 2 страницы сайта. Для одного сайта лучше сделать отдельный шаблон, сначала собрать ссылки, а потом get запросами собрать email. В пределах одного сайта это легко реализуется. Можно конечно собрать ссылки с сайта и скормить этому шаблону, но будет неэффективно на мой взгляд.
 
Посоветую простой "финт" ушами - чтобы не искать страницу контактов (чтоб не было зависимости от языка) - достаточно будет просто спарсить все ссылки, которые будут на главной странице) И уже в них искать почту. Да, будет чуть больше почт в теории собрано, но разве это плохо? :-)
Можно и такой вариант реализовать, тогда на запросах будет легче сделать, единственное если попадётся сайт с большим количеством ссылок много лишних запросов будет.
 
Сделал ещё одну браузерную версию шаблона для более полного сбора почт с сайтов - Collecting_Emails_Full.
Если в первой версии искался только 1 email на главной или на странице контактов, то этот шаблон собирает все почты с главной и со страниц контакты. Часто на странице контактов есть дополнительные email-ы подразделений, отдельных лиц, отделов и т.д. теперь шаблон соберёт их всех. Очистит почты от дублей и внесёт в конечный файл.
Не обошлось без минусов. Время обработки 1000 сайтов при 45 потоках увеличилось с 20 до 28 минут, но почт при этом было собрано почти в 2 раза больше.

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

Вложения

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

Вложения

Попробовал, не одной почты не нашел...
 
Я пробовал https://2gis.ru/ и леди майл
С lady. mail. ru шаблон собрал 10 почт. Cайты нужно указывать без https:// и http:// иначе будет собирать только с главных страниц почты, заметил такое ограничение сейчас.
Но я так понял Вы хотели собрать почты с компаний которые есть на сайте 2гис, если так, то этот шаблон не для этого, нужно конкретно для 2 гис. Мой же шаблон собирает почты с главной страницы сайта и со страницы Контакты.
 
С lady. mail. ru шаблон собрал 10 почт. Cайты нужно указывать без https:// и http:// иначе будет собирать только с главных страниц почты, заметил такое ограничение сейчас.
Но я так понял Вы хотели собрать почты с компаний которые есть на сайте 2гис, если так, то этот шаблон не для этого, нужно конкретно для 2 гис. Мой же шаблон собирает почты с главной страницы сайта и со страницы Контакты.
Понял спасибо
 
Отличный шаб!
Подскажите что нужно добавить (и к какой строке :)) чтобы в файл записывались не только почты, но и сайт с которого почта взята (или даже страница)
Например:
site.ru;mail@site.ru
 
Что то у меня ошибки во втором кубике показывает(
F28yXWX.png


В логе пишет:


HidaAWf.png


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

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

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