Один из наиболее эффективных способов таргетинга при запуске рекламных кампаний в VK — это таргетирование по ID. Может показаться, что это лишено смысла, ведь собирать ID потенциальных лидов — дело неблагодарное. Все так, но только если делать это вручную. Если же парсить ботом — это вопрос пары секунд. О том, как создать такой бот, мы и расскажем ниже. К слову, никто не запрещает вам использовать ID для других, само собой законных, целей :)
Принцип работы бота-парсера для Telegram
Алгоритм бота достаточно прост и завязан на двух авторизациях — в самом VK и в Telegram (через обычный бот-api). Это означает, что вам не придется вводить никакие коды, как в случае с юзер-ботами, о которых мы писали в защитниках от спама, или в случае с ботом для перелива трафика в Telegram.
Нам нужно будет лишь два токена — один «ботовский» от Telegram и второй ВКшный, от страницы, через которую будет осуществляться парсинг. Свою личную страницу привязывать не нужно!
В остальном же простой алгоритм бота сводится к:
- Авторизации по бот-api в Telegram.
- Авторизации по юзер-api в VK.
- Прослушиванию эфира в ЛС бота.
- Реакциям на новые сообщения в виде проверки их содержимого на правильность формата.
- Считыванию и сохранению в файл ID пользователей указанной группы VK, если сообщение написано в правильном формате.
- Отказу в обработке сообщения и просьбе написать правильно, если сообщение в неправильном формате.
- Возврату файла со списком ID юзеров анализируемого сообщения в ЛС бота.
Как видите, абсолютно ничего сложного — всего 7 пунктов, из которых 2 — авторизационные. Поэтому не будем долго размусоливать — перейдем к коду.
Пошаговая инструкция, как создать бота для парсинга аудитории из VK в Telegram Ads
Как и для любого другого бота, сперва нам понадобится сервер для размещения этого самого бота. О том, как создать свой Python-сервер, мы рассказывали в отдельной статье, поэтому расписывать пошагово в этот раз не будем. После развертывания Python-сервера его нужно будет настроить для работы с Telegram и VK, для этого вводим в консоль:
pip install vk
pip install telebot
После этого можно переходить к созданию самого бота:
- Сперва получаем токен у BotFather — пишем ему в ЛС и следуем инструкции.
- Затем получаем токен от VK. Надежнее всего использовать версию токена VK Admin. Но вы можете попробовать получить другой тип токена. В том числе другим способом, это полностью ваш выбор. После получения токена сохраняем его. Сам токен будет находиться в URL, в формате ссылка#access_token=ТОКЕН&user_id=ИД.
- После получения токенов создаем в корне сервера файл bot.py.
- Вставляем в него следующий код:
import telebot
import vk_apiimport os
import time
# Ваш API-ключ от Телеграм-бота
telegram_token = 'ТОКЕН ОТ БОТА'
# Ваш access token для API ВКонтакте
vk_token = 'ТОКЕН ОТ ВК'
# Инициализация бота
bot = telebot.TeleBot(telegram_token)
def get_vk_group_members_ids(group_link):
vk_session = vk_api.VkApi(token=vk_token)
vk = vk_session.get_api()
group_id = group_link.split('/')[-1]
members_ids = []
try:
response = vk.groups.getMembers(group_id=group_id)
members_ids.extend(response['items'])
while response['count'] > len(members_ids):
response = vk.groups.getMembers(group_id=group_id, offset=len(members_ids))
members_ids.extend(response['items'])
except vk_api.exceptions.ApiError as e:
print(f"Ошибка при получении участников группы: {e}")
return members_ids
def get_vk_group_members(group_link):
vk_session = vk_api.VkApi(token=vk_token)
vk = vk_session.get_api()
group_id = group_link.split('/')[-1]
try:
group_info = vk.groups.getById(group_id=group_id, fields='members_count')
members_count = group_info[0].get('members_count')
if members_count is not None:
members_ids = get_vk_group_members_ids(group_link)
file_name = f"{group_id}.txt"
with open(file_name, 'w') as f:
for member_id in members_ids:
f.write(str(member_id) + '\n')
return members_count, file_name
except vk_api.exceptions.ApiError as e:
print(f"Ошибка при получении информации о группе: {e}")
return "Информация о количестве подписчиков недоступна.", None
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Отправь мне ссылку на паблик/группу ВКонтакте в формате https://vk.com/trafficcardinal.")
@bot.message_handler(func=lambda message: True)
def echo_all(message):
print (message.text)
if 'vk.com' in message.text:
members_count, file_path = get_vk_group_members(message.text)
if members_count is not None:
bot.reply_to(message, f"В этой группе {members_count} подписчиков.")
if file_path:
with open(file_path, 'rb') as f:
bot.send_document(message.chat.id, f)
os.remove(file_path) # Удаляем файл после отправки
else:
bot.reply_to(message, "Не удалось получить информацию о группе. Пожалуйста, проверьте правильность ссылки.")
else:
bot.reply_to(message, "Пожалуйста, отправьте ссылку на паблик/группу ВКонтакте.")
# Бесконечный цикл для перехвата исключений и продолжения работы
while True:
try:
# Запуск бота
bot.polling(none_stop=True, timeout=60)
except Exception as e:
print(f"Ошибка при выполнении бота: {e}")
time.sleep(15) # Пауза перед повторной попыткой - Подставляем в код свои значения токенов.
- Сохраняем файл.
- Запускаем его, введя в консоль сервера python bot.py
- Проверяем работоспособность бота, скинув ему в ЛС ссылку на анализируемый паблик. Ссылка должна быть вида: https://vk.com/trafficcardinal — если все ок, бот вернет вам файл со списком ID подписчиков.
Обязательно убедитесь, что список подписчиков не приватный и паблик не закрыт.
На этом все — бот готов! А для следующего шага — анализа качества аудитории пользователей паблика, вы можете использовать наш бот-анализатор.
Демонстрация работы
Подводя итоги
Надеемся, наш материал помог вам понять, как создать собственного бота для парсинга ID подписчиков ВКшных пабликов. А на этом у нас все! Сегодня строго по делу, а точнее, по коду. Подписывайтесь на наш Telegram-канал, чтобы первым получать исходники рабочих ботов под арбитражные задачи.