Файл: Кафедра прикладной математики курсовая работа анализ предпочтений участников сообществ с помощью api "вконтакте".docx
Добавлен: 08.11.2023
Просмотров: 96
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
(ФГБОУ ВО «КубГУ»)
Кафедра прикладной математики
КУРСОВАЯ РАБОТА
АНАЛИЗ ПРЕДПОЧТЕНИЙ УЧАСТНИКОВ СООБЩЕСТВ С ПОМОЩЬЮ API "ВКОНТАКТЕ"
Работу выполнил _____________________________________Тихоненко В.В.
(подпись, дата) (инициалы, фамилия)
Факультет компьютерных технологий и прикладной математики курс 3
Направление 09.03.03 Прикладная информатика
Н аучный руководитель
профессор, к.ф. – м.н.,
доцент_______________________________________________ В.Н. Кармазин
(подпись, дата) (инициалы, фамилия)
Нормоконтролер,
к. ф.– м. н.___________________________________________ Г.В. Калайдина
(подпись, дата) (инициалы, фамилия)
Краснодар 2018
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 2
1 API «ВКонтакте». Общие сведения. 3
1.2 Мониторинг социальных сетей 5
2 Разработка программы 7
2.1.1 Методы и библиотеки 7
2.1.2 Основной цикл программы 8
2.2 Запись полученных данных в таблицу 11
3 Анализ предпочтений студентов 13
3.1 Сортировка по количеству просмотров 17
3.2 Сортировка по количеству лайков 19
3.3 Сортировка по количеству репостов 21
ЗАКЛЮЧЕНИЕ 23
ПРИЛОЖЕНИЕ 25
ВВЕДЕНИЕ
Наиболее популярной социальной сетью в России является «ВКонтакте»
«ВКонтакте» – социальная сеть, российский аналог сервиса Facebook, самый посещаемый сайт Украины и Белоруссии, второй по популярности в России. Сайт изначально позиционировал себя в качестве социальной сети студентов и выпускников российских высших учебных заведений, позднее – как универсальный способ связи для всех социальных групп и возрастов.
«ВКонтакте» позволяет создавать свои сообщества. Создание и продвижение собственного сообщества является наиболее востребованным и часто применяемым инструментом продвижения во «ВКонтакте». Свое сообщество позволяет решить сразу несколько важных задач: во–первых, постоянно оставаться на связи с пользователями, сообщать им, к примеру, о новинках ассортимента или о скидочных акциях. Во–вторых, получать обратную связь от пользователей. В–третьих, информировать о компании новую аудиторию [1].
В ходе данной курсовой работы была написана программа на языке Python 3. Задача программы состоит в получении информации об интересах участников сообщества «ВКонтакте». Для анализа были выбраны группы «Подслушано в КубГУ» и «Подслушано в КубГМУ». Программа позволяет выводить данные в электронную таблицу в формате csv.
Из анализа полученных данных можно будет сделать вывод о том, какой контент больше нравится участникам сообщества.
1 API «ВКонтакте». Общие сведения.
API (от англ. application programming interface) – это интерфейс взаимодействия между сайтом и сторонними программами и серверами, набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Более просто – API это целый комплекс разнообразных готовых функций, готовых классов, констант и т.д., которые можно использовать в сторонних приложениях. API ВКонтакте постоянно дорабатывается и сегодня это – уже полнофункциональный набор дополнений, позволяющий создать любое приложение.
API ВКонтакте – позволяет получать информацию из базы данных vk.com с помощью http–запросов к специальному серверу. Вам не нужно знать в подробностях, как устроена база, из каких таблиц и полей каких типов она состоит – достаточно того, что API–запрос об этом «знает». Синтаксис запросов и тип возвращаемых ими данных строго определены на стороне самого сервиса [2].
Средства API ВКонтакте позволяют собирать и анализировать данные со страниц пользователей, страниц сообществ данной социальной сети, размещать разнообразные полезные виджеты на сайт.
Последнее глобальное преобразование этой среды разработки было проведено еще в апреле 2009 года. Конечно, и после этого сайт постоянно модифицировался.
Отметим основные возможности API ВКонтакте:
- На API был реализован доступ приложений к друзьям, их фото, видеозаписям. Приложения сейчас могут самостоятельно создавать альбомы, размещать в них информацию.
- Рассылка приложениями уведомлений.
- Приглашать друзей в приложения стало проще также благодаря интерфейсу прикладного программирования, на котором была реализована данная функция массового приглашения.
- Со страниц приложений исчезла реклама от ВК.
- Стало доступным API позволяющее использовать голоса ВКонтакте в качестве внутренних расчетов.
- Возможность запуска приложений в полноэкранном режиме.
- Порядок вывода приложений также реализован на API. Сегодня по умолчанию, те игры, которые запускаются чаще всего – находятся у вас на первых позициях. Которыми давно не пользовались – найдете в конце списка.
- Для самых популярных приложений стала возможна регистрация коротких поддоменов (например chat.vk.com и аналогичных) для простого запоминания и быстрого доступа.
- Появилась возможность вывода информации на личных страницах пользователей.
1.2 Мониторинг социальных сетей
Мониторинг социальных сетей – это выборка текстов пользователей социальных сетей, основанная на тех или иных критериях отбора данных текстов, а так же процесс сбора данной выборки и её интерпретации.
Мониторинг обязательно проводится перед стартом работ в социальных сетях, чтобы выяснить отношение аудитории к бренду, и регулярно повторяется, чтобы отследить динамику показателей.
Мониторинг социальных сетей дает ответы на важные вопросы:
-
каково текущее восприятие бренда аудиторией; -
какие темы лучше обсуждать с аудиторией;
-
как работают конкуренты в социальных сетях и каковы результаты
их PR–деятельности;
-
на каких площадках целевая аудитория наиболее активна, и какие
из них больше всего влияют на репутацию бренда.
Мониторинг социальных сетей позволяет:
-
быстро реагировать на потребности аудитории (часто на
негатив);
-
принять решение о том, какая стратегия работы в социальных
сетях будет наиболее подходящей для бренда [3].
2 Разработка программы
2.1.1 Методы и библиотеки
Python – это высокоуровневый язык программирования с широким набором функций, наиболее универсальный из всех. Как правило, в первую очередь он направлен на высокую производительность и хорошую читаемость программного кода. Чтобы добиться этого синтаксис его ядра максимально упрощён, но вот в расширениях большое количество самых разных, в том числе и нестандартных функций. Его преимуществом является также поддержка сразу нескольких парадигм программирования, также он всегда позиционировался как объектно – ориентированный язык.
Данный язык программирования отличает огромное количество модулей, как входящих в стандартную поставку Python 3, так и сторонних.
В ходе выполнения были использованы следующие библиотеки:
-
Requests – выполняет HTTP–запросы. -
csv – модуль для чтения и записи файла в формате SCV. -
Datetime – модуль предоставляет классы для обработки времени
и даты разными способами.
Во время разработки задачи необходимо было обратиться к серверу с запросом, для получения данных о каждой записи в сообществе. Это позволяет сделать метод API «wall.get». Он используется к методам для работы с записями на стене сообщества.
Данный метод возвращает список записей со стены пользователя или сообщества.
В таблице 1 приведены параметры данного метода:
Таблица 1 – Список параметров метода wall.get
owner_id | идентификатор пользователя или сообщества, со стены которого необходимо получить записи (по умолчанию – текущий пользователь) |
domain | короткий адрес пользователя или сообщества |
offset | смещение, необходимое для выборки определенного подмножества записей |
count | количество записей, которое необходимо получить. |
filter | определяет, какие типы записей на стене необходимо получить. Возможные значения: suggests – предложенные записи на стене сообщества (доступно только при вызове с передачей access_token); postponed – отложенные записи (доступно только при вызове с передачей access_token); owner – записи владельца стены; others – записи не от владельца стены; all – все записи на стене (owner + others). |
extended | 1 – в ответе будут возвращены дополнительные поля profiles и groups, содержащие информацию о пользователях и сообществах. По умолчанию: 0. |
|
После успешного выполнения возвращает объект, содержащий число результатов в поле count и массив объектов записей на стене в поле items.
Если был задан параметр extended=1, возвращает число результатов в поле count, отдельно массив объектов записей на стене в поле items, пользователей в поле profiles и сообществ в поле groups [5].
2.1.2 Основной цикл программы
Перед тем как нам приступить к анализу данных, необходимо было получить записи со стены обоих сообществ. Для этого необходимо было в программе такие параметры, как owner_id, offset и count. Owner_id – идентификатор нужного нам сообщества («Подслушано в Кубгу»/«Подслушано в КубГМУ»). Параметром count было задано количество постов, которое будет выведено одним таким запрос. В данной программе было выбрано 50 постов. Параметр offset задавался динамически в основном цикле программы, чтобы можно было на каждой итерации цикла программы перемещаться по записям сообщества и получать записи, следующие после уже полученных.
В результате запрос к серверу и основной цикл программы приняли следующий вид:
group_id = '– 59061778’ #’- 55982026”
offset = 0
date_x = 1494374400
all_posts = []
while True:
sleep(1)
r = requests.get('https://api.vk.com/method/wall.get',params={'owner_id':group_id,'count':50,'offset':offset})
posts = r.json()['response']
all_posts.extend(posts)
oldest_post_date = posts[–1]['date']
offset += 50
print(offset)
if oldest_post_date < date_x:
break
В переменной group_id хранится идентификатор рассматриваемого нами сообщества. Для удобства он задается не в самом запросе, а в виде переменной, которая передается в запрос.
В переменной date_x хранится дата в формате Unix epoch. UNIX–время или POSIX–время – способ кодирования времени, принятый в UNIX и других POSIX–совместимых операционных системах.
В данной программе будем рассматривать посты за прошедший год. Поэтому в переменной date_x хранится дата, обозначающая тот же день год назад (10.05.2017). Она же является условием остановки цикла.
В цикле, с помощью запроса request.get, происходит обращение к базе данных vk.com для получения 50 постов анализируемой группы. Следующим шагом полученные посты записывается в массив posts, чтобы в дальнейшем их можно было записать в массив all_posts, в котором содержатся посты полученные ранее. Затем происходит смещение (offset) на 50 постов вперед. Цикл программы выполняется пока значение переменной oldest_post_date не станет меньше значения даты 10.05.2017.
Действуют ограничения на число запросов к API. Для клиентского приложения лимит составляет 3 rps (раза в секунду). Для серверного приложения действует прогрессивная шкала, в зависимости от числа установок приложения (rps/число установок): 5/<10000, 8/<100000, 20/<1000000. 35/>1000000 [4].
Чтобы избежать ошибок в ходе выполнения программы, необходимо было установить ограничение на количество выполняемых запросов в секунду. Для этого была использована функция sleep в начале цикла. Она позволяет на каждой итерации приостановить цикл на одну секунду. Таким образом, выполнение запросов происходит не чаще одного раза в секунду.
Также в основной процедуре программы предусмотрен подсчет времени, за которое будут получены искомые данные. Для этой цели в начале процедуры в переменную start заносится текущее значение времени, а в конце процедуры, после работы цикла, в переменную end снова заносится текущее значение времени. Таким образом, отняв полученные значения, можно узнать, сколько времени прошло с момента запуска основной процедуры и до момента окончания ее работы.
В конце основной процедуры происходит вывод на экран значения в переменной total, в которой отражено время, затраченное на выполнение программы. Также на экран выводится длина массива all_posts, чтобы можно было увидеть, сколько постов в итоге удалось получить.