Пишем простой парсер ВК на Python
Парсер — программа, которая по заданному алгоритму собирает нужную информацию на сайте. Парсеры часто применяют в маркетинговых целях, чтобы собрать базу для таргетированной рекламы или спам рассылки. Наш парсер будет способен формировать базу участников выбранного сообщества, сохранять базы в txt файле, высчитывать процент пересечения двух баз, объединять две базы в одну без повторов, а также будет доступен ввод сохраненной базы из txt файла.
Подготовка
Для взаимодействия с API Вконтакте мы будем использовать модуль vk. Установить vk можно через pip с помощью команды: pip install vk
Также, чтобы получить сервисный ключ доступа, нам потребуется создать приложение на сайте Вконтакте. Это можно сделать по этой ссылке.
Пишем код
Первым делом давайте импортируем модуль vk, обозначим имена наших будущих функций и напишем авторизацию.
Конструкция if __name__ == "__main__":
нужна чтобы описать, что будет происходить, если запустить эту программу как основную. Другими словами, если импортировать эту программу в другой код как модуль, то все описанные действия в этой конструкции исполняться не будут.
Теперь приступим к созданию наших функций. Для того, чтобы собрать данные об участниках группы, мы будем использовать метод API groups.getMembers. Основной параметр этого метода group_id — это id(только цифры) или короткое имя сообщества, эту информацию можно найти в URL сообщества. Параметр v — это версия API, посмотреть актуальную можно тут. Метод возвращает нам данные в виде словаря. “count” — кол-во подписчиков, “items” — список id’шников.
Проблема заключается в том, что этот метод может возвратить нам максимум 1000 id’шников. Но благодаря параметру offset, который отвечает за смещение от начала полного списка участников(по умолчанию 0), и циклу for, мы можем получить список всех участников сообщества.
Теперь напишем функции сохранения базы в файл и чтения базы из файла.
Далее реализуем две функции, использующие множества.
Весь основной функционал готов, осталось лишь дописать в конструкцию if __name__ == "__main__":
какие функции мы хотим применить.
Например, давайте найдем пересечение аудиторий двух групп про кино, объединим их аудиторию без повторов и сохраним в txt файл.
1. https://vk.com/hdkinomania
2. https://vk.com/bobfilm
Код будет выглядеть вот так:
Пересечение аудиторий у этих двух сообществ — 1,65%
На этом все! При желании, немного изменив код, можно собирать больше информации о пользователях.