Меня пару дней назад осенила идея написать парсер, который проверит теорию шести рукопожатий на одном конкретном аккаунте. Разумеется, выбор пал именно на социальную сеть ВКонтакте, а основная цель – найти Павла Дурова за кратчайший путь. Итак, поехали!
Писать свою библиотеку сбора друзей не стал, поэтому использовал уже готовый ВКонтакте API для .Net. Вытягиваем оттуда функцию Friends.Get(ID), запасаемся чашечкой кофе и пишем за один вечер полноценный парсер. Не забываем про подводные камни: не попадет ли наша программа в ловушку рекурсии (у Васи в друзьях Петя, а у Пети Вася), не обидеться ли сервер за превышение лимита количества однотипных запросов, и можно смело начинать наше исследование. Так как дело не быстрое, решил взять сервер на тестовый период – это совершенно бесплатно, ровно на 10 дней. После дня работы было примерно следующее:
Все работает, собран первый миллион пользователей, осталось только ждать!
Спустя пару дней скорость значительно упала, что весьма ожидаемо. Дело в том, что каждого нового пользователя надо было сравнивать с уже добавленными, так как в базе не должно быть повторов. Можно глянуть статистику обращений:
Что же удалось за все это время?
Всего было собрано: 5 601 348 пользователей
Среднее количество друзей: 340
Максимальное количество друзей: 9908
И самое интересное, я дошел лишь до 4 уровня связи:
1 уровень связи: 24 пользователя
2 уровень связи: 2 216 пользователей
3 уровень связи: 472 869 пользователей
4 уровень связи: свыше 5 601 348 пользователей
Теперь, каких же известных людей удалось все же найти:
Павел Дуров, как ворота в мир известности и популярности, поэтому приводить список всех друзей пользователя с айдишником равным одному не имеет смысла.
Заключение
Как я считаю, эксперимент все же удался – Павел Дуров найден! Для пущей уверенности можете отправить мне свой id, и я построю для Вас цепочку из знакомых. Исходники крепить не имеет смысла: зачем нервировать людей, у которых аллергия на ужасный код?
Все опечатки сделаны умышленно.
Автор: нештатный корреспондент