Данный проект предназначен для построения и визуализации социального графа пользователя ВКонтакте на основе его друзей.
Пример графа 3-го колена
Проект позволяет:
- Получать список друзей пользователя ВКонтакте (до заданной глубины — "колена").
- Сохранять информацию о пользователях и их связях в базу данных MongoDB.
- Формировать граф связей и экспортировать его в формат, поддерживаемый Gephi (GEXF, GML, GraphML) для дальнейшей визуализации.
- Установите MongoDB: Инструкция по установке
- Клонируйте репозиторий:
git clone https://github.com/r1natt/vk_social_graph cd vk_social_graph - Создайте виртуальное окружение и установите зависимости:
python3 -m venv env source ./env/bin/activate pip install -r requirements.txt - Создайте файл конфигурации
config.iniна основе примера:Затем откройтеcp config.ini.example config.iniconfig.iniи укажите ваши значения для ключа VK, параметров MongoDB и тестовых пользователей.
- Создайте мини-приложение VK: VK Apps
- Перейдите в "Разработка" → "Ключи доступа"
- Скопируйте "Сервисный ключ доступа" и добавьте его в
SERVICE_KEY = ваш_токен
python main.py parse_friends 123456 2
-
parse_friends — команда для запуска парсинга друзей.
-
123456 — VK ID пользователя.
-
2 — глубина парсинга (колено).
-
Дополнительно можно указать флаг --update для обновления данных:
python main.py parse_friends 123456 2 --update
python main.py build_graph 123456 2
- build_graph — команда для построения графа.
- 123456 — VK ID пользователя.
- 2 — глубина построения графа.
В текущей версии команда build_graph формирует только файл графа в выбранном формате (.gexf, .gml или .graphml). Визуализация самого графа не производится автоматически внутри проекта.
Для просмотра, анализа и стилизации графа используйте стороннее open-source приложение Gephi.
Откройте сгенерированный файл графа в Gephi, чтобы визуализировать структуру связей, применить фильтры, раскрасить узлы и воспользоваться всеми возможностями анализа социальных графов.
- Модульность: Код разделён на независимые модули: запросы к API, работа с БД, парсинг, построение и экспорт графа.
- Модели данных: Для обмена данными между модулями используются строгие pydantic-модели, dataclass и enum, что обеспечивает надёжность и удобство поддержки.
- Обход графа: Используется итеративный BFS вместо рекурсии — это упрощает отладку и позволяет строить графы любой глубины.
