Парсинг ответы mail и Мой Мир — мои результаты двухдневного эксперимента

Кейсы

8 февраля 2015

0 1906

Итак, что я имел на входе? Да ровным счетом ничего. Кроме желания научиться парсингу у меня был только ноут и кое какие знания в программировании. Ими я, конечно же, делиться не буду, это не столь важно. Главное я хочу показать, что мне удалось достичь с помощью упорства и поставленной цели.

Начало эксперимента

Я давно занимаюсь парсингом и сбором баз компаний России, Украины, Казахстана и Беларуси. Уже освоил Яндекс-Карты, так что проблем тут особых нет. Но два дня назад, мне нужно было собрать базу контактов физических лиц, который проживали бы в Санкт-Петербурге и имели высшее образование. Как это сделать?

Я начал парсить всякие питерские форумы, собрал больше 10000 контактов, но база вышла не валидной, потому что в ней были только e-mail адреса без имен, места учебы, интересов и возрастов. Что я буду с такой базой делать? Ничего! Потому что отказы при e-mail рассылке по такой базе физических лиц была бы почти 100%.

И тут меня осенило, существует же сервис Ответов майл ру. Почему бы не попробовать парсить с него, по крайней мере я получу больше данных, но придется писать парсер с нуля. Ничего страшного — впереди выходные, я успею! Так как база мне была нужна уже к понедельнику. И я загорелся этой идеей. Начал пытаться парсить Ответы.

Этапы парсинга

Для более понятной и упрощенной логики я решил делить парсинг на несколько этапов:

  • первым этапом я собираю все вопросы в заданной категории (категория — это облать интересов пользователей, например, Авто, Бизнес, Экономика…). Проблема тут крылась в прокрутке страницы для сбора максимального количества вопросов — как нажать на кнопку «Еще»? Я смог ее решить написанием скрипта по эмуляции действия пользователя;
  • далее стал парсить каждый вопрос и собирать id пользователей. Отличо, у меня уже есть база аккаунтов пользователей. Осталось только извлечь из нее нужные данные. Это оказалось самым сложным;
  • после нескольких неудачных попыток парсинга аккаунтов Ответов я решил, что нужно сначала собрать базу «Мой мир», так как в ней гораздо больше данных о пользователях, да и ее парсить проще;
  • собрав базу «Мой мир», я столкнулся с проблемой — не все аккаунты имели необходимые данные, а те которые имели не всегда подчинялись строгим правилам размещения в коде страницы.Это был ключевой момент в парсинге: как структурировать скрипт так, чтобы он подходил всем аккаунтам «Мой мир»?

Ночь мучений

Я не сильно разбирался в регулярных выражениях, но тут без них было не обойтись. Только с помощью них можно было привести в соответствие все строки кода на странице пользователя. Суть была в том, чтобы научиться извлекать учебные заведения в правильном порядке и с правильными границами. Так как хранились они в одной структуре данных (в одном контейнере), и отличались лишь классом. Более того, внутри классов находились еще какие-то объекты со стилями, котоорые и мешали правильно извлекать данные.

Мне пришлось искать решение в интернете, я задал вопрос на одном популярном форуме, но к сожалению там мне не помогли, может потому что было уже 3 часа ночи, а может просто все спали… В итоге, к утру я смог найти решение, изучив пару учебников по регуляркам. Итак, вроде все, вот оно — решение моей проблемы! Но…

Я столкнулся с очередной проблемой — майл ру банит меня и считает, что на него производится Ddos атака, забавно, не правда ли? Удалось решить снижением одновременных подключений до 2, выяснил, что 2 это оптимальное число для парсинга любого количества данных.

Итак, что я теперь имею?

Результаты парсинга

За 2 дня и 1 ночь работы мне удалось настроить парсинг одной и самых крупных соц. сетей «Мой мир» и самого крупного сервиса вопрос-ответ «Ответ майл ру».

На выходе я имею базу данных, содержащую сведения о пользователе (замечу, это физ. лицо, а сбор баз физических лиц — довольно проблематичное заняние, тем более, мне удалось собрать практически все сведения о пользователях), которые я могу использовать для самых разных целей:

  • имя, фамилия, отчество;
  • дата рождения;
  • возраст (на момент сбора базы);
  • страна, область и город проживания;
  • интересы в категории;
  • учебные заведения ( школа, техникум, институт);
  • e-mail почту (используется для верифицированной и персонализированной рассылки).

Такую базу можно использовать для:

  • анализа BigData (сейчас очень модное направление аналитики), тем более, что в моей базе хранится достоверная информация о пользователях;
  • поиска нужных людей и получения сведений о них;
  • персонализированных e-mail рассылок;
  • выявления интересов пользователей, таргетированных по городам, учебным заведениям, интересам.

Вообще хочется сказать, что моя база позволяет ранжировать физ. лиц по максимальному числу параметров, поэтому отлично подходит под любую целевую аудиторию.

Вот таких успехов я смог достичь за 2 суток, зато меня посетило чувство удовлетворения, потому что я смог добиться поставленной цели, ну и еще одним плюсом — хочу предложить желающим ознакомится с моими базами тут.


Мнение автора является его собственностью и не претендует на истину в последней инстанции.