Traffic Cardinal Traffic Cardinal написал 22.05.2024

Как создать Telegram-бота для парсинга аудитории VK

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

Один из наиболее эффективных способов таргетинга при запуске рекламных кампаний в VK — это таргетирование по ID. Может показаться, что это лишено смысла, ведь собирать ID потенциальных лидов — дело неблагодарное. Все так, но только если делать это вручную. Если же парсить ботом — это вопрос пары секунд. О том, как создать такой бот, мы и расскажем ниже. К слову, никто не запрещает вам использовать ID для других, само собой законных, целей :)

banner banner

Принцип работы бота-парсера для Telegram

Алгоритм бота достаточно прост и завязан на двух авторизациях — в самом VK и в Telegram (через обычный бот-api). Это означает, что вам не придется вводить никакие коды, как в случае с юзер-ботами, о которых мы писали в защитниках от спама, или в случае с ботом для перелива трафика в Telegram.

Нам нужно будет лишь два токена — один «ботовский» от Telegram и второй ВКшный, от страницы, через которую будет осуществляться парсинг. Свою личную страницу привязывать не нужно!

В остальном же простой алгоритм бота сводится к:

  1. Авторизации по бот-api в Telegram.
  2. Авторизации по юзер-api в VK.
  3. Прослушиванию эфира в ЛС бота.
  4. Реакциям на новые сообщения в виде проверки их содержимого на правильность формата.
  5. Считыванию и сохранению в файл ID пользователей указанной группы VK, если сообщение написано в правильном формате.
  6. Отказу в обработке сообщения и просьбе написать правильно, если сообщение в неправильном формате.
  7. Возврату файла со списком ID юзеров анализируемого сообщения в ЛС бота.

Как видите, абсолютно ничего сложного — всего 7 пунктов, из которых 2 — авторизационные. Поэтому не будем долго размусоливать — перейдем к коду.

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

Как и для любого другого бота, сперва нам понадобится сервер для размещения этого самого бота. О том, как создать свой Python-сервер, мы рассказывали в отдельной статье, поэтому расписывать пошагово в этот раз не будем. После развертывания Python-сервера его нужно будет настроить для работы с Telegram и VK, для этого вводим в консоль:

pip install vk

pip install telebot

После этого можно переходить к созданию самого бота:

  1. Сперва получаем токен у BotFather — пишем ему в ЛС и следуем инструкции.
  2. Затем получаем токен от VK. Надежнее всего использовать версию токена VK Admin. Но вы можете попробовать получить другой тип токена. В том числе другим способом, это полностью ваш выбор. После получения токена сохраняем его. Сам токен будет находиться в URL, в формате ссылка#access_token=ТОКЕН&user_id=ИД.
  3. После получения токенов создаем в корне сервера файл bot.py.
  4. Вставляем в него следующий код:
    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) # Пауза перед повторной попыткой
  5. Подставляем в код свои значения токенов.
  6. Сохраняем файл.
  7. Запускаем его, введя в консоль сервера python bot.py
  8. Проверяем работоспособность бота, скинув ему в ЛС ссылку на анализируемый паблик. Ссылка должна быть вида: https://vk.com/trafficcardinal — если все ок, бот вернет вам файл со списком ID подписчиков.

Обязательно убедитесь, что список подписчиков не приватный и паблик не закрыт.

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

Демонстрация работы

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

Надеемся, наш материал помог вам понять, как создать собственного бота для парсинга ID подписчиков ВКшных пабликов. А на этом у нас все! Сегодня строго по делу, а точнее, по коду. Подписывайтесь на наш Telegram-канал, чтобы первым получать исходники рабочих ботов под арбитражные задачи.

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