2 минут чтения
20 декабря 2020 г.
Парсинг целевой аудитории ВКонтакте
При размещении рекламы некоторые площадки в настройках аудитории позволяют загрузить список конкретных людей, которые увидят рекламу. Для парсинга id по конкретным пабликам существуют специальные инструменты, но куда интереснее (и дешевле) сделать это собственноручно при помощи Python и VK API. Сегодня расскажем, как для рекламной кампании LEFTJOIN мы спарсили целевую аудиторию и загрузили её в рекламный кабинет.
В материале «Собираем данные по рекламным кампаниям ВКонтакте» подробно описан процесс получения токена пользователя для VK API
Парсинг пользователей
Для отправки запросов потребуется токен пользователя и список пабликов, чьих участников мы хотим получить. Мы собрали около 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(«%s\n» % item)
Аудитория в рекламном кабинете из файла
Переходим в свой рекламный кабинет ВКонтакте и заходим во вкладку «Ретаргетинг». Там будем кнопка «Создать аудиторию»:
После нажатия на неё откроется новое окно, где можно будет выбрать в качестве источника файл и указать название для аудитории:
После загрузки пройдёт несколько секунд и аудитория будет доступна. Первые минут 10 будет указано, что аудитория слишком мала: это не так и панель вскоре обновится, если в вашей аудитории действительно более 100 человек.
Итоги
Сравним среднюю стоимость привлечённого в наше сообщество участника в объявлении с автоматической настройкой аудитории и в объявлении, аудиторию для которого мы спарсили. В первом случае получаем среднюю стоимость в 52,4 рубля, а во втором — в 33,2 рубля. Подбор качественной аудитории при помощи методов парсинга данных из ВКонтакте помог снизить среднюю стоимость на 37%.
Для рекламной кампании мы подготовили такой пост https://vk.com/wall-195051876_51
[ Рекомендации ]
Читайте также
[ Связаться ]
Давайте раскроем потенциал вашего бизнеса вместе
Заполните форму на бесплатную консультацию