11 сервисов для парсинга ЦА и таргетирования Вконтакте

ЧТО ПАРСИТЬ И ДЛЯ ЧЕГО?

Парсер способен получить любую информацию, которая размещена в публичном доступе на ресурсе vk и не скрыта настройками приватности. Из типичного, в маркетинговых целях собирают следующие данные (хотя функционал намного шире):

Список пользователей из групп или встреч;</li>Людей, прореагировавших на определённые посты (поставившие лайк, репост, комментарий);</li>Авторов записей в какой-либо группе;</li>Семейные пары пользователей;</li>Ключевые слова в статусе;</li>Администраторов;</li>Всех друзей и подписчиков определённого человека;</li>Группы вконтакте по ключевым словам;</li>Ссылки на аккаунты в других социальных сетях;</li>Номера телефонов, логины в skype;</li>Дни рождения.</li>

Полученные базы используются различными способами. Приведём лишь несколько примеров настройки таргета с помощью спарсенных данных, а то этот материал может быть бесконечным:

  • Реклама на аудиторию, недавно вступившую в группы конкурентов;
  • Показ объявлений на популярные посты с тематическим контентом;
  • Выборка активных участников сообществ, используя сбор по участникам голосования, авторов постов и обсуждений;
  • Подбор подписчиков в нескольких тематических группах (например, человек состоит одновременно в 3 сообществах о маркетинге);
  • Настройка кампании только на администраторов сообществ определённой тематики;
  • Поиск похожих сообществ для расширения аудитории рекламной кампании. 

Кроме таргетированной рекламы, спарсенные данные можно использовать ещё и для других, менее очевидных задач. Мы, конечно, не особо их приветствуем, но озвучим для галочки:

  • СМС рассылки по телефонам со страниц пользователей;
  • Рассылки в личные сообщения (массовая рассылка сообщений людям, не давшим на это согласия, запрещена).

Как видите, возможности и сферы применения парсеров разнообразны. Поэтому ими пользуются практически все профи в таргетинге: от маркетологов крупных брендов до арбитражников из CPA сетей. Попробуем и мы. Нужно только выбрать подходящий парсер.

Что умеет грабер постов из групп Вконтакте:

Парсинг пользователей

Для отправки запросов потребуется токен пользователя и список пабликов, чьих участников мы хотим получить. Мы собрали около 30 сообществ, посвящённых аналитике, BI-инструментам и Data Science.

import requests  import time    group_list =  ['datacampus', '185023286', 'data_mining_in_action', '223456', '187222444', 'nta_ds_ai', 'business__intelligence', 'club1981711', 'datascience', 'ozonmasters', 'businessanalysts', 'datamining.team', 'club.shad', '174278716', 'sqlex', 'sql_helper', 'odssib', 'sapbi', 'sql_learn', 'hsespbcareer', 'smartdata', 'pomoshch_s_spss', 'dwhexpert', 'k0d_ds', 'sql_ex_ru', 'datascience_ai', 'data_club', 'mashinnoe_obuchenie_ai_big_data', 'womeninbigdata', 'introstats', 'smartdata', 'data_mining_in_action', 'dlschool_mipt']    token = 'ваш_токен'

Запрос на получение участников сообщества к API ВКонтакте вернёт максимум 1000 строк — для получения последующих тысяч потребуется смещать параметр offset на единицу. Но нужно знать, до какого момента это делать — поэтому опишем функцию, которая принимает id сообщества, получает информацию о числе участников сообщества и возвращает максимальное значение для offset — отношение числа участников к 1000, ведь мы можем получить ровно тысячу человек за раз.

def get_offset(group_id):      count = requests.get('https://api.vk.com/method/groups.getMembers', params={              'access_token':token,              'v':5.103,              'group_id': group_id,              'sort':'id_desc',              'offset':0,              'fields':'last_seen'          }).json()['response']['count']      return count // 1000

Следующим этапом опишем функцию, которая принимает id сообщества, собирает в один список id всех подписчиков и возвращает его. Для этого отправляем запросы на получение 1000 человек, пока не кончается offset, вносим данные в список и возвращаем его. Проходя по каждому человеку дополнительно проверяем дату его последнего посещения социальной сети — если он не заходил с середины ноября, добавлять его не будем. Время указывается в формате unixtime.

def get_users(group_id):      good_id_list = []      offset = 0      max_offset = get_offset(group_id)      while offset < max_offset:          response = requests.get('https://api.vk.com/method/groups.getMembers', params={              'access_token':token,              'v':5.103,              'group_id': group_id,              'sort':'id_desc',              'offset':offset,              'fields':'last_seen'          }).json()['response']          offset += 1          for item in response['items']:              try:                  if item['last_seen']['time'] >= 1605571200:                      good_id_list.append(item['id'])              except Exception as E:                  continue      return good_id_list

Теперь пройдём по всем сообществам из списка и для каждого соберём участников, а затем внесём их в общий список all_users. В конце переводим сначала список в множество, а затем опять в список, чтобы избавиться от возможных дубликатов: одни и те же люди могли быть участниками разных пабликов. Лишним не будет после каждого паблика приостановить работу программы на секунду, чтобы не столкнуться с ограничениями на число запросов.

all_users = []    for group in group_list:      print(group)      try:          users = get_users(group)          all_users.extend(users)          time.sleep(1)      except KeyError as E:          print(group, E)          continue    all_users = list(set(all_users))

Последним шагом записываем каждого пользователя в файл с новой строки.

with open('users.txt', 'w') as f:      for item in all_users:          f.write("%sn" % item)

5. Граббер свежих постов из поиска Вконтакте.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий