Аналитика профиля ВК: различия между версиями
Нет описания правки |
|||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
=== 📊 Аналитика профиля ВКонтакте === | |||
'''Автор:''' Арлинская Александра | |||
'''Группа:''' АДЭУ-221 | |||
'''Дисциплина:''' Работа с API социальных сетей и визуализация данных | |||
=== 📘 Введение === | |||
Проект представляет собой веб-сайт для детального анализа публичной страницы или профиля ВКонтакте. Пользователь вводит адрес сообщества, после чего система собирает данные через официальное API VK, обрабатывает их и отображает в виде структурированной статистики и наглядных графиков. | |||
=== 🎯 Цель проекта === | |||
* Создать удобный инструмент для анализа статистики сообществ ВКонтакте. | |||
* Предоставить пользователю ключевые метрики: количество подписчиков, постов, суммарные лайки, репосты и комментарии. | |||
* Визуализировать динамику вовлечённости по времени: график активности по постам, распределение по часам и дням недели. | |||
* Провести текстовый анализ контента с выделением самых частых слов в публикациях. | |||
=== 💻 Стек технологий === | |||
''Python 3.11, FastAPI, VK API, HTML5, CSS3, JavaScript, Chart.js'' | |||
=== 🛠 Архитектура и блок-схема проекта === | |||
Проект построен на архитектуре клиент-сервер. Backend (Python + FastAPI/Flask) обрабатывает запросы к VK API, собирает и агрегирует данные. Frontend (HTML/CSS/JS) отображает информацию и визуализирует графики с использованием библиотеки Chart.js. | |||
{{#mermaid: | |||
flowchart TB | |||
A[Пользователь] --> B[Frontend<br/>HTML/CSS/JS] | |||
B --> C[Backend<br/>FastAPI + Python] | |||
C --> D[VK API] | |||
D -->|данные профиля и постов| C | |||
C -->|аналитика| B | |||
B -->|визуализация| A | |||
}} | |||
=== 🛠 Диаграмма работы приложения «Аналитика профиля ВКонтакте» === | |||
{{#mermaid: flowchart TB | {{#mermaid: flowchart TB | ||
| Строка 96: | Строка 74: | ||
}} | }} | ||
=== 🔑 Получение токена доступа VK API === | |||
Для работы с [https://dev.vk.com/ru/reference API ВКонтакте] необходимо создать приложение и получить ключ доступа (токен). Ниже описан пошаговый процесс. | |||
==== Шаг 1. Создание приложения ==== | |||
На странице создания приложения необходимо указать следующие параметры: | |||
* '''Тип приложения''' — выбирается «Мини-приложение» для получения доступа к API сообществ и пользователей. | |||
* '''Название приложения''' — задаётся уникальное имя (не менее трёх символов). | |||
* '''Категория''' — выбирается «Инструменты» для аналитических сервисов. | |||
[[Файл:Создание приложения.jpg|мини|центр]] | |||
После заполнения формы необходимо подтвердить согласие с правилами размещения и платформы, затем нажать кнопку «Создать». | |||
==== Шаг 2. Получение ключей доступа ==== | |||
В разделе «Ключи доступа» генерируется токен для работы с API. | |||
[[Файл:Ключ доступа.jpg|мини|центр]] | [[Файл:Ключ доступа.jpg|мини|центр]] | ||
Сгенерированный токен сохраняется в файле <code>.env</code> проекта для дальнейшего использования при запросах к VK API. | |||
=== 🗂 Структура проекта === | |||
<div style="font-family: monospace; background-color: #2c3e50; color: #e8e8e8; padding: 15px; border-radius: 8px; margin-top: 10px; font-size: 14px;"> | <div style="font-family: monospace; background-color: #2c3e50; color: #e8e8e8; padding: 15px; border-radius: 8px; margin-top: 10px; font-size: 14px;"> | ||
| Строка 145: | Строка 115: | ||
</div> | </div> | ||
</div> | </div> | ||
'''Назначение ключевых файлов:''' | |||
* '''main.py''' — серверная логика: маршруты, взаимодействие с VK API, обработка данных. | |||
* '''templates/index.html''' — стартовая страница с полем ввода адреса профиля. | |||
* '''templates/result.html''' — страница с полной аналитикой: графики, статистика, топ-слов. | |||
* '''.env''' — хранение токена доступа к VK API и других секретов. | |||
=== 📊 Описание визуализации === | |||
==== 1. Главная страница ==== | |||
Пользователю предлагается ввести адрес страницы (например, <code>durov</code> или полную ссылку <code>vk.com/durov</code>). После нажатия кнопки «Анализировать» система начинает сбор данных. Кнопка «Сбросить» очищает форму для нового запроса. | |||
[[Файл:Главная страница аналитики.png|мини|центр]] | [[Файл:Главная страница аналитики.png|мини|центр]] | ||
==== 2. Карточка профиля ==== | |||
В верхней части страницы результатов отображается основная информация о сообществе или пользователе: | |||
* '''Имя профиля''' и статус (например, «Pavel Durov» и «Детектор»). | |||
* '''Геолокация''' — город (Saint Petersburg). | |||
* '''Дата рождения''' и '''пол''' (для пользователей). | |||
* '''Количество подписчиков''' — крупным шрифтом (4.8M). | |||
* '''Количество загруженных постов''' (500). | |||
[[Файл:Карточка профиля.png|мини|центр]] | [[Файл:Карточка профиля.png|мини|центр]] | ||
==== 3. Ключевые метрики ==== | |||
Блок с агрегированной статистикой по всем проанализированным постам: | |||
* Общее количество постов. | |||
* Суммарное количество лайков и среднее значение на пост. | |||
* Суммарное количество репостов. | |||
* Суммарное количество комментариев и среднее значение на пост. | |||
[[Файл:Ключевые метрики.png|мини|центр]] | [[Файл:Ключевые метрики.png|мини|центр]] | ||
==== 4. График вовлечённости по постам ==== | |||
Линейный график, отображающий динамику трёх метрик (лайки, репосты, комментарии) для последних 50 постов. По оси X — даты публикаций, по оси Y — количество взаимодействий. График позволяет визуально оценить пики активности и выявить наиболее успешные публикации. | |||
==== 5. Активность по часам ==== | |||
Горизонтальная столбчатая диаграмма, показывающая распределение публикаций по часам суток. Позволяет определить, в какое время автор чаще всего публикует контент. Часовые интервалы от 00:00 до 21:00. | |||
==== 6. Активность по дням ==== | |||
Столбчатая диаграмма, отображающая количество публикаций по дням недели (Пн, Вт, Ср, Чт, Пт, Сб, Вс). Помогает выявить наиболее активные дни ведения сообщества. | |||
[[Файл:Визуализация 1.png|мини|центр]] | [[Файл:Визуализация 1.png|мини|центр]] | ||
==== 7. Топ-20 слов ==== | |||
Список наиболее часто встречающихся слов в текстах постов. Анализ позволяет понять основные темы и ключевые понятия, вокруг которых строится контент сообщества. Пример: «вконтакте», «telegram», «россии», «пользователей», «сегодня». | |||
[[Файл:Топ20.png|мини|центр]] | [[Файл:Топ20.png|мини|центр]] | ||
=== 🚫 Фильтрация стоп-слов === | |||
При анализе текстов постов система автоматически исключает часто встречающиеся, но не несущие смысловой нагрузки слова (предлоги, местоимения, союзы). Это позволяет выделить действительно значимые ключевые слова и получить точную картину тематики контента. | |||
==== 📝 Отрывок кода, отвечающий за фильтрацию: ==== | |||
'''Список стоп-слов (русские и английские):''' | |||
<syntaxhighlight lang="python"> | |||
RU_STOPWORDS = { | RU_STOPWORDS = { | ||
"и","в","во","не","что","он","на","я","с","со","как","а","то","все","она", | "и","в","во","не","что","он","на","я","с","со","как","а","то","все","она", | ||
| Строка 232: | Строка 201: | ||
"we","you","he","she","all","as","do","did","been","his","her","our","their", | "we","you","he","she","all","as","do","did","been","his","her","our","their", | ||
} | } | ||
</syntaxhighlight> | |||
'''Функция обработки текста постов (фрагмент из process_posts):''' | |||
<syntaxhighlight lang="python"> | |||
def process_posts(posts: list) -> dict: | def process_posts(posts: list) -> dict: | ||
# ... остальной код ... | # ... остальной код ... | ||
| Строка 258: | Строка 228: | ||
}, | }, | ||
} | } | ||
</syntaxhighlight> | |||
'''Как это работает:''' | |||
* Из всех постов собирается текст и разбивается на отдельные слова | |||
* Отбрасываются слова короче 3 символов (регулярное выражение <code>r"\b[а-яёa-zA-Z]{3,}\b"</code>) | |||
* Из оставшихся слов удаляются стоп-слова из списка <code>RU_STOPWORDS</code> | |||
* Подсчитывается частота оставшихся слов с помощью <code>Counter</code> | |||
* Формируется топ-20 самых частых слов для отображения на графике | |||
=== 📌 Выводы === | |||
* Разработанный веб-сайт предоставляет полную аналитику публичного профиля ВКонтакте: от базовых метрик до детальных графиков вовлечённости. | |||
* Визуализация данных включает линейные графики динамики постов, распределение по часам и дням недели, а также текстовый анализ с выделением ключевых слов. | |||
* Интерфейс выполнен в стилистике VK: светлый фон, акцентные синие элементы, удобная карточная структура. | |||
* Для работы с API был успешно получен токен доступа через создание мини-приложения в VK. | |||
[[Категория:Работа с API]] | [[Категория:Работа с API]] | ||
Текущая версия от 11:15, 27 марта 2026
📊 Аналитика профиля ВКонтакте
Автор: Арлинская Александра
Группа: АДЭУ-221
Дисциплина: Работа с API социальных сетей и визуализация данных
📘 Введение
Проект представляет собой веб-сайт для детального анализа публичной страницы или профиля ВКонтакте. Пользователь вводит адрес сообщества, после чего система собирает данные через официальное API VK, обрабатывает их и отображает в виде структурированной статистики и наглядных графиков.
🎯 Цель проекта
- Создать удобный инструмент для анализа статистики сообществ ВКонтакте.
- Предоставить пользователю ключевые метрики: количество подписчиков, постов, суммарные лайки, репосты и комментарии.
- Визуализировать динамику вовлечённости по времени: график активности по постам, распределение по часам и дням недели.
- Провести текстовый анализ контента с выделением самых частых слов в публикациях.
💻 Стек технологий
Python 3.11, FastAPI, VK API, HTML5, CSS3, JavaScript, Chart.js
🛠 Архитектура и блок-схема проекта
Проект построен на архитектуре клиент-сервер. Backend (Python + FastAPI/Flask) обрабатывает запросы к VK API, собирает и агрегирует данные. Frontend (HTML/CSS/JS) отображает информацию и визуализирует графики с использованием библиотеки Chart.js.
🛠 Диаграмма работы приложения «Аналитика профиля ВКонтакте»
🔑 Получение токена доступа VK API
Для работы с API ВКонтакте необходимо создать приложение и получить ключ доступа (токен). Ниже описан пошаговый процесс.
Шаг 1. Создание приложения
На странице создания приложения необходимо указать следующие параметры:
- Тип приложения — выбирается «Мини-приложение» для получения доступа к API сообществ и пользователей.
- Название приложения — задаётся уникальное имя (не менее трёх символов).
- Категория — выбирается «Инструменты» для аналитических сервисов.

После заполнения формы необходимо подтвердить согласие с правилами размещения и платформы, затем нажать кнопку «Создать».
Шаг 2. Получение ключей доступа
В разделе «Ключи доступа» генерируется токен для работы с API.

Сгенерированный токен сохраняется в файле .env проекта для дальнейшего использования при запросах к VK API.
🗂 Структура проекта
Назначение ключевых файлов:
- main.py — серверная логика: маршруты, взаимодействие с VK API, обработка данных.
- templates/index.html — стартовая страница с полем ввода адреса профиля.
- templates/result.html — страница с полной аналитикой: графики, статистика, топ-слов.
- .env — хранение токена доступа к VK API и других секретов.
📊 Описание визуализации
1. Главная страница
Пользователю предлагается ввести адрес страницы (например, durov или полную ссылку vk.com/durov). После нажатия кнопки «Анализировать» система начинает сбор данных. Кнопка «Сбросить» очищает форму для нового запроса.

2. Карточка профиля
В верхней части страницы результатов отображается основная информация о сообществе или пользователе:
- Имя профиля и статус (например, «Pavel Durov» и «Детектор»).
- Геолокация — город (Saint Petersburg).
- Дата рождения и пол (для пользователей).
- Количество подписчиков — крупным шрифтом (4.8M).
- Количество загруженных постов (500).

3. Ключевые метрики
Блок с агрегированной статистикой по всем проанализированным постам:
- Общее количество постов.
- Суммарное количество лайков и среднее значение на пост.
- Суммарное количество репостов.
- Суммарное количество комментариев и среднее значение на пост.

4. График вовлечённости по постам
Линейный график, отображающий динамику трёх метрик (лайки, репосты, комментарии) для последних 50 постов. По оси X — даты публикаций, по оси Y — количество взаимодействий. График позволяет визуально оценить пики активности и выявить наиболее успешные публикации.
5. Активность по часам
Горизонтальная столбчатая диаграмма, показывающая распределение публикаций по часам суток. Позволяет определить, в какое время автор чаще всего публикует контент. Часовые интервалы от 00:00 до 21:00.
6. Активность по дням
Столбчатая диаграмма, отображающая количество публикаций по дням недели (Пн, Вт, Ср, Чт, Пт, Сб, Вс). Помогает выявить наиболее активные дни ведения сообщества.

7. Топ-20 слов
Список наиболее часто встречающихся слов в текстах постов. Анализ позволяет понять основные темы и ключевые понятия, вокруг которых строится контент сообщества. Пример: «вконтакте», «telegram», «россии», «пользователей», «сегодня».

🚫 Фильтрация стоп-слов
При анализе текстов постов система автоматически исключает часто встречающиеся, но не несущие смысловой нагрузки слова (предлоги, местоимения, союзы). Это позволяет выделить действительно значимые ключевые слова и получить точную картину тематики контента.
📝 Отрывок кода, отвечающий за фильтрацию:
Список стоп-слов (русские и английские):
RU_STOPWORDS = {
"и","в","во","не","что","он","на","я","с","со","как","а","то","все","она",
"так","его","но","да","ты","к","у","же","вы","за","бы","по","только","её",
"мне","было","вот","от","меня","ещё","нет","о","из","ему","теперь","когда",
"даже","ну","вдруг","ли","если","уже","или","ни","быть","был","него","до",
"вас","нибудь","опять","уж","вам","ведь","там","потом","себя","ничего","ей",
"может","они","тут","где","есть","надо","ней","для","мы","тебя","их","чем",
"была","сам","чтоб","без","будто","чего","раз","тоже","себе","под","будет",
"ж","тогда","кто","этот","того","потому","этого","какой","совсем","ним",
"здесь","этом","один","почти","мой","тем","чтобы","нее","сейчас","были",
"куда","зачем","всех","никогда","можно","при","наконец","два","об","другой",
"хоть","после","над","больше","тот","через","эти","нас","про","всего","них",
"какая","много","разве","три","эту","моя","впрочем","свою","этой","перед",
"иногда","лучше","чуть","том","нельзя","такой","им","более","всегда",
"конечно","всю","между","это","этим","при","нам","этих","та","те","при",
"ещe","тебе","со","вся","все","бы","ведь","вон","вот","да","даже","для",
"его","нет","ни","тот","раз","еще",
"the","and","in","of","to","a","is","it","that","for","on","are","with",
"was","at","be","by","this","have","from","or","an","but","not","they",
"we","you","he","she","all","as","do","did","been","his","her","our","their",
}
Функция обработки текста постов (фрагмент из process_posts):
def process_posts(posts: list) -> dict:
# ... остальной код ...
# Сбор всего текста из постов
all_text = " ".join(p.get("text", "") for p in posts if p.get("text"))
# Разбивка на слова (только слова длиной от 3 символов)
words = re.findall(r"\b[а-яёa-zA-Z]{3,}\b", all_text.lower())
# Фильтрация стоп-слов
filtered = [w for w in words if w not in RU_STOPWORDS]
# Подсчёт топ-20 самых частых слов
top_words = Counter(filtered).most_common(20)
return {
# ... остальные данные ...
"words": {
"labels": [w[0] for w in top_words],
"data": [w[1] for w in top_words],
},
}
Как это работает:
- Из всех постов собирается текст и разбивается на отдельные слова
- Отбрасываются слова короче 3 символов (регулярное выражение
r"\b[а-яёa-zA-Z]{3,}\b") - Из оставшихся слов удаляются стоп-слова из списка
RU_STOPWORDS - Подсчитывается частота оставшихся слов с помощью
Counter - Формируется топ-20 самых частых слов для отображения на графике
📌 Выводы
- Разработанный веб-сайт предоставляет полную аналитику публичного профиля ВКонтакте: от базовых метрик до детальных графиков вовлечённости.
- Визуализация данных включает линейные графики динамики постов, распределение по часам и дням недели, а также текстовый анализ с выделением ключевых слов.
- Интерфейс выполнен в стилистике VK: светлый фон, акцентные синие элементы, удобная карточная структура.
- Для работы с API был успешно получен токен доступа через создание мини-приложения в VK.
