Анализируем аудиторию: бот-парсер для VK своими руками
Traffic Cardinal Traffic Cardinal  написал 30.11.2022

Анализируем аудиторию: бот-парсер для VK своими руками

Traffic Cardinal Traffic Cardinal  написал 30.11.2022
7 мин
0
4401
Содержание

Таргетированная реклама — проверенный временем инструмент. Но в случае с VK аудитория многих пабликов — фейки. Чтобы не растрачивать бюджет впустую — создадим бота, который будет анализировать аудиторию паблика. Напомним, что ранее мы уже создавали бота-говорилку для VK — советуем ознакомиться с материалом и более детальным разбором особенностей создания ботов для VK.

banner banner

*Спойлер: готовый исходный код — в конце статьи.

Какие задачи решает бот

Данный бот предназначен для непосредственной оценки потенциала аудитории пабликов VK для рекламных целей. Для этого бот:

  • Парсерит список участников сообществ.

  • Вытягивает информацию для оценки со страницы каждого отдельно взятого участника.

  • Сопоставляет полученную информацию.

  • Выводит процентные значения.

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

Принцип работы бота

Принцип работы бота следующий:

  • Бот получает сообщение от пользователя с адресом группы.

  • Парсит аудиторию паблика.

  • Проверяет каждого пользователя на бан VK.

  • Проверяет каждого пользователя на наличие фотографии.

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

  • Проверяет каждого пользователя на дату регистрации.

  • Возвращает в ЛС сообщение с процентным соотношением «фейковых» пользователей к общему числу подписчиков.

Пошаговая инструкция, как создать парсер аудитории VK

  1. Сперва вам нужно получить токен. Важное уточнение — токен дает полный доступ к странице, так что советуем использовать не основной профиль.
  2. Затем авторизируемся в pythonanywhere.
  3. Инициируем запуск Bash-консоли.
  1. Дожидаемся загрузки машины.
  2. Ждем подтверждения загрузки.
  1. Патчим машину под VK API, для этого прописываем:

pip3.9 install vk_api

  1. Открываем блокнот или другой текстовый редактор, вводим:

import vk_api

import requests

from vk_api.longpoll import VkLongPoll, VkEventType

import time

import json

from bs4 import BeautifulSoup

import datetime as DT

token="ваш токен"

bh = vk_api.VkApi(token = token)

give = bh.get_api()

longpoll = VkLongPoll(bh)

time = time.time()

def blasthack(id, text):

bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})

def ras4eti(s):

bs4et=0

bs4etn=0

fs4et=0

fs4etn=0

ls4et=0

ls4etn=0

rs4et=0

rs4etn=0

users=0

timetest=time-2629743

count = requests.get('https://api.vk.com/method/groups.getMembers', params={

'access_token':token,

'v':5.103,

'group_id': s,

'sort':'id_desc',

'offset':0,

'fields':'last_seen'

}).json()['response']['count']

get_offset=count//1000

good_id_list = []

max_offset = get_offset

if max_offset == 0:

max_offset=1

offset = 0

while offset < max_offset:

response = requests.get('https://api.vk.com/method/groups.getMembers', params={

'access_token':token,

'v':5.103,

'group_id': s,

'sort':'id_desc',

'offset':offset,

'fields':'last_seen'

}).json()['response']

offset += 1

for item in response['items']:

good_id_list.append(item['id'])

with open('users.txt', 'w') as f:

for item in good_id_list:

f.write("%s\n" % item)

blasthack(id, 'Парсинг завершен, приступаю к анализу (может занять много времени)')

file1 = open("users.txt", "r")

while True:

# считываем строку

line = file1.readline()

users=users+1

# прерываем цикл, если строка пустая

if not line:

break

# выводим строку

a=line.strip()

good_id_list = []

response = requests.get('https://api.vk.com/method/users.get', params={

'access_token':token,

'v':5.103,

'user_id': a,

'fields':'last_seen,has_photo'

}).json()['response']

aList = json.dumps(response)

x = aList.split(",")

cbt=x[2]

if str(cbt) == str(' "deactivated": "deleted"'):

bs4et=bs4et+1

else:

bs4etn=bs4etn+1

if str(x[1]) != ' "has_photo": 1':

fs4et=fs4et+1

else:

fs4etn=fs4etn+1

x[2] = x[2][:-1]

if str(x[2]) != ' "last_seen": {"platform": ':

ls4et=ls4et+1

else:

g=str(x[3])

s = g

s=s.replace(' "time": ', '')

s=s.replace('}', '')

if int(s)-time > timetest:

ls4et=ls4et+1

else:

ls4etn=ls4etn+1

response = requests.get('https://vk.com/foaf.php?id='+a)

xml = response.text

soup = BeautifulSoup(xml, 'lxml')

created = soup.find('ya:created').get('dc:date')

dt = created

dt = dt.replace("+03:00", "")

dt = dt.replace("T", " ")

dt = DT.datetime.strptime(dt, '%Y-%m-%d %H:%M:%S')

dt=dt.timestamp()

dt=int(dt)

if dt-time>94670778:

rs4et=rs4et+1

else:

rs4etn=rs4etn+1

#закрываем файл

file1.close

prob=int(bs4et/users*100)

prof=int(fs4et/users*100)

prol=int(ls4et/users*100)

pror=int(rs4et/users*100)

print (prob)

print (prof)

print (prol)

print (pror)

blasthack(id, 'Анализ завершен. \nВ паблике: '+s+'\nЗабаненных акков: '+str(prob)+'% ('+str(bs4et)+')\nАкков без фото: '+str(prof)+'% ('+str(fs4et)+')\nАкков не заходивших в сеть 30+ дней: '+str(prol)+'% ('+str(ls4et)+')\nАкков зарегистрированных менее 3 лет назад: '+str(pror)+'% ('+str(rs4et)+')')

response=0

for event in longpoll.listen():

if event.type == VkEventType.MESSAGE_NEW:

# Чтобы наш бот не слышал и не отвечал на самого себя

if event.to_me:

# Для того чтобы бот читал все с маленьких букв

message = event.text.lower()

# Получаем id пользователя

id = event.user_id

s = message

response=0

try:

response = requests.get('https://api.vk.com/method/groups.getMembers', params={

'access_token':token,

'v':5.103,

'group_id': s

}).json()['response']

except: response != "error"

if response == 0:

blasthack(id, 'Паблик с таким ID не существует')

if response != 0:

blasthack(id, 'Парсим аудиторию паблика: \n' +s)

ras4eti(s)

  1. Указываем токен вместо “ваш токен”.
  2. Сохраняем код как bot.py.
  1. Грузим скрипт на сервер.
  1. Инициируем запуск bot.py.
  1. Тестируем парсер.

Исходный код

Ссылка на скачивание исходного кода

Подводя итоги

Как видите, создать собственный парсер для анализа аудитории не сложно — надеемся, он поможет вам в настройке таргетинга и сэкономит ваш бюджет.

ТОП партнерских программ
Год основания: 2014
Leadbit Nutra - опытная партнерская программа с 900+ офферов на ТОПовые ГЕО. Для вебмастеров представлены COD и Trials&SS офферы на любой вкус.

Ключевые особенности:
- эксклюзивные рекламодатели
- огромный выбор офферов по всему миру
- индивидуальные условия для партнеров
- дружелюбные персональные менеджеры
- программа лояльности с ценными призами
  • Вертикали: 1
  • Офферы: 76
  • Минимум: 50 $
Год основания: 2016
Официальная партнерская программа букмекерской конторы MostBet. Программа запущена в 2016 году. За это время несколько тысяч партнеров привели в Mostbet более 15 000 000 игроков со всего мира. Партнерка специализируется на онлайн-казино и беттинге, а выплаты происходят по моделям CPA и RevShare. У продукта Mostbet есть ряд важных преимуществ, которые неизменно привлекают азартных игроков и позволяют достигать высоких Retention Rate и LTV. Например, на сайте можно найти около 1300 слотов и прочих продуктов казино.

Преимущества:
- Досрочные выплаты по запросу;
- Экспертная поддержка менеджеров,
- Высокая конверсия и LTV;
- Уникальные промо-материалы и прелендинги;
- собственный трекер приложения;
- Демо-счет для игроков на любую сумму;
- Персональный промокод для привлечения игроков.
- Минимальная выплата: 50 $
- Периодичность выплат: по запросу
- Реферальная система: 0%
  • Вертикали: 1
  • Офферы: 8
  • Минимум: 50 $
Год основания: 2013
Shakes.pro — крупная партнерская сеть с 2013 года, отбирает самые выгодные nutra-офферы по всему миру (включая in-house). Является частью крупного холдинга. Забудь о бесконечном поиске офферов! Здесь тебе предлагают только то, что уже приносит реальные деньги на все страны.

Основные преимущества

Гарантированный и высокий апрув. Команда сама решит все вопросы с рекламодателями и поделится качественными промо с локализацией.
3 программы лояльности, с которыми ты будешь получать ценные призы за каждый лид.
Ежеквартальные подборки офферов с подробной аналитикой, которые успешнее других по доходам.
  • Вертикали: 1
  • Офферы: 23
  • Минимум: 3000 ₽
Год основания: 2014
Не нашли подходящий оффер? Не беда, подключим под вас

Работать можно со многими источниками трафика. Поможем со всем необходимым для работы. Наша главная цель - обеспечение комфортных и качественных условий работы как для вебмастеров, так и для рекламодателей.

Ключевые особенности:
• Family партнерка. Решим любые боли наших вебмастеров
• Индивидуальные условия работы по любым офферам. Наличие капов
• Выплаты по запросу, без выходных и праздников
• Собственный store с шикарными призами
• Выдаем прилы под iOS/android, готовые крео под залив, аудитории таргетинга
• Максимально подробная статистика, обновляемая в режиме Real-Time
• Саппорт, личный менеджер 24/7
  • Вертикали: 2
  • Офферы: 649
  • Минимум: 50 $
LGaming — это партнерская сеть в вертикали беттинг и гемблинг с более чем 1000 активными офферами от 200 рекламодателей. В партнерке доступен инхаус-продукт BetAndreas. Сеть LGaming создана командой, за плечами которой несколько лет опыта в гемблинг-вертикали CPA-сети Leadbit. Партнерская сеть предлагает проверенные креативы с высоким конвертом и рекомендации по проливу от отдела баинга. Также у компании есть собственный бренд и партнерский сервис по выдаче виртуальных карт.
  • Вертикали: 1
  • Офферы: 1000+
  • Минимум: 100 $
Комментарии
0
Написать комментарий

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!