Пишем простой парсер ВК на Python

coding by pixc
3 min readJan 6, 2019

--

Парсер — программа, которая по заданному алгоритму собирает нужную информацию на сайте. Парсеры часто применяют в маркетинговых целях, чтобы собрать базу для таргетированной рекламы или спам рассылки. Наш парсер будет способен формировать базу участников выбранного сообщества, сохранять базы в txt файле, высчитывать процент пересечения двух баз, объединять две базы в одну без повторов, а также будет доступен ввод сохраненной базы из txt файла.

Подготовка

Для взаимодействия с API Вконтакте мы будем использовать модуль vk. Установить vk можно через pip с помощью команды: pip install vk

Также, чтобы получить сервисный ключ доступа, нам потребуется создать приложение на сайте Вконтакте. Это можно сделать по этой ссылке.

Создаем Standalone-приложение
Сервисный ключ доступа находится во вкладке “Настройки” вашего приложения

Пишем код

Первым делом давайте импортируем модуль 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%

Так выглядит база

На этом все! При желании, немного изменив код, можно собирать больше информации о пользователях.

https://t.me/codingbypixc
Исходный код

--

--