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

Вернуться назад

Telegram уже давно перестал быть мессенджером в его классическом понимании – площадка стала полноценной социальной сетью с кучей эксклюзивных плюшек для пользователей. В последнее время разработчики Telegram запустили кучу нововведений – от привычных всем сторис до выплат владельцам Telegram-каналов. А официальный токен от Телеграма “TON” бьет все рекорды, показывая стремительный и стабильный рост.

Но одной из главных фишек Telegram являются боты, которые упрощают пользование для юзеров. Они появились здесь еще до того, как это стало мейнстримом и сейчас могут выполнять множество функций. Одна из них довольно полезная для вебмастеров – парсинг.

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

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

Для чего нужен бот для парсинга в Telegram?

Ответ настолько же прост, как и вопрос – для парсинга. Если это слово вам неизвестно, то парсинг – это быстрый сбор информации, расположенной на страницах.

Такие боты могут использоваться для сбора информации о пользователях для дальнейших рассылок, анализа активности каналов в Telegram и комментариев пользователей. Что с ними делать дальше – дело только вашей фантазии.

Если говорить о том, как именно работают эти боты, то очень упрощенно – их можно использовать в чатах и в основном в каналах. Для последнего есть два исключения.

Первое – если канал ваш и он насчитывает более 200 подписчиков, его можно пропарсить. Второе – в канале есть чат, тогда механизм парсинга будет таким же, как и для чатов, но сбор информации будет проходить исключительно среди подписчиков этого чата, а не канала.

Как работают боты для парсинга в Telegram?

Алгоритм у большинства таких ботов очень похож, лишь с минимальными отличиями. После авторизации, он анализирует ссылку на канал, нужное количество публикаций, комментаторов под ними (если говорить о канале с чатом).

После этого все данные собираются, фильтруются (согласно вашему запросу, например, от дублей) и передаются в виде файла.

Как создать бот для парсинга в Telegram?

Что ж, переходим к самой интересной части. А именно – как написать бот для парсинга в Telegram. Для этого мы будем использовать один из самых распространенных языков для программирования Python, но вы также можете выбрать JavaScript, Go и тому подобное. Все зависит от ваших потребностей и предпочтений.

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

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

  1. Выбираем “API development tools” и заполняем все необходимые поля.

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

2. После того как нажали “Create”, у вас появится api_id и api_hash – сохраните их, чтобы не потерять и не передавайте третьим лицам.

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

pip install asyncio pip install telethon

4. Далее необходимо создать файл .py. Условно можно его назвать test.py.

5. Далее добавьте в файл следующий код, не забудьте внести изменения, где это указано:

from telethon.sync import TelegramClient

from telethon.tl import types

from telethon.tl.functions.messages import GetHistoryRequest

api_id = Замените на ваш API ID’ # Замените на ваш API ID

api_hash = Замените на ваш API Hash’ # Замените на ваш API Hash

phone_number = Замените на ваш номер телефона’ # Замените на ваш номер телефона

channel_username = ‘Канал’

output_file = ‘output.txt’

async def main():

try:

# Инициализация клиента

client = TelegramClient(‘session_name’, api_id, api_hash)

# Подключение к серверам Telegram

await client.connect()

# Авторизация юзера, если это необходимо

if not await client.is_user_authorized():

await client.send_code_request(phone_number)

await client.sign_in(phone_number, input(‘Введіть код з СМС: ‘))

# Получаем идентификатор канала

channel = await client.get_entity(channel_username)

# Получаем последние 10 сообщений с канала (в том числе публикации и комментарии)

messages = await client(GetHistoryRequest(

peer=channel,

limit=10,

offset_date=None,

offset_id=0,

max_id=0,

min_id=0,

add_offset=0,

hash=0

))

# Считать существующие ИД с файла, если файл существует

existing_ids = set()

try:

with open(output_file, ‘r’) as file:

for line in file:

existing_ids.add(int(line.strip()))

except FileNotFoundError:

pass # Если файл не существует, игнорируем ошибку

# Список для уникальных ИД комментаторов 

unique_comment_user_ids = set()

for message in messages.messages:

post_id = message.id

print(f”Post ID: {post_id}”)

# Получаем комментарии к каждому посту

comment_user_ids = set()

try:

async for comment_message in client.iter_messages(channel, reply_to=post_id, reverse=True):

if isinstance(comment_message.sender, types.User):

comment_user_ids.add(comment_message.sender.id)

elif isinstance(comment_message.sender, types.Chat):

comment_user_ids.add(comment_message.sender.id)

except Exception as e:

print(f”Error while processing post ID {post_id}: {e}”)

# Исключаем присутствующие ИД

comment_user_ids -= existing_ids

# Добавляем уникальные ИД к общему списку

unique_comment_user_ids.update(comment_user_ids)

# Записываем уникальные ИД комментаторов в файл

with open(output_file, ‘a’) as file:

for user_id in unique_comment_user_ids:

file.write(f”{user_id}n”)

except Exception as e:

print(f”Error: {e}”)

if __name__ == ‘__main__’:

# Запуск асинхронного кода

import asyncio

asyncio.run(main())

6. Сохраняем файл. 7. Запускаем бот командой:

python parser.py

8. Далее необходимо авторизовать бот в Telegram. Для этого нужно указать номер, который ранее вы добавили в код и ввести пароль, который вам придет в Telegram. 9. Вы получите файл с ИД комментаторов в виде output.txt.

Как видите, сам процесс не является сложным и справиться с ним может почти каждый.

Выводы

Спарсить ID юзеров в Telegram довольно просто, особенно если речь идет о чате. Если же это канал – для него должны быть открыты комментарии и получится спарсить только часть аудитории. Или же, если вы владелец этого канала – тогда никаких проблем не возникнет, хотя обычно у владельцев такой необходимости не возникает.

Кроме того, этот код можно забросить в цикл и спарсить сразу несколько каналов. Правда, это может привести к блокировке вашего аккаунта. Ведь в Telegram есть лимиты обращений к API, хоть публично об этом и не пишут. Впрочем, это все можно очень просто пройти – надо лишь добавить немного креатива.

Читать также:
Крипто-ажиотаж: ралли Notcoin и многообещающее будущее Algotech

Последние посты

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь