Содержание:
Вернуться назад
Telegram уже давно перестал быть мессенджером в его классическом понимании – площадка стала полноценной социальной сетью с кучей эксклюзивных плюшек для пользователей. В последнее время разработчики Telegram запустили кучу нововведений – от привычных всем сторис до выплат владельцам Telegram-каналов. А официальный токен от Телеграма “TON” бьет все рекорды, показывая стремительный и стабильный рост.
Но одной из главных фишек Telegram являются боты, которые упрощают пользование для юзеров. Они появились здесь еще до того, как это стало мейнстримом и сейчас могут выполнять множество функций. Одна из них довольно полезная для вебмастеров – парсинг.
Поэтому сегодня мы рассказываем, для чего нужны боты для парсинга в Telegram, как их создать и каким образом использовать.
Для чего нужен бот для парсинга в Telegram?
Ответ настолько же прост, как и вопрос – для парсинга. Если это слово вам неизвестно, то парсинг – это быстрый сбор информации, расположенной на страницах.
Такие боты могут использоваться для сбора информации о пользователях для дальнейших рассылок, анализа активности каналов в Telegram и комментариев пользователей. Что с ними делать дальше – дело только вашей фантазии.
Если говорить о том, как именно работают эти боты, то очень упрощенно – их можно использовать в чатах и в основном в каналах. Для последнего есть два исключения.
Первое – если канал ваш и он насчитывает более 200 подписчиков, его можно пропарсить. Второе – в канале есть чат, тогда механизм парсинга будет таким же, как и для чатов, но сбор информации будет проходить исключительно среди подписчиков этого чата, а не канала.
Как работают боты для парсинга в Telegram?
Алгоритм у большинства таких ботов очень похож, лишь с минимальными отличиями. После авторизации, он анализирует ссылку на канал, нужное количество публикаций, комментаторов под ними (если говорить о канале с чатом).
После этого все данные собираются, фильтруются (согласно вашему запросу, например, от дублей) и передаются в виде файла.
Как создать бот для парсинга в Telegram?
Что ж, переходим к самой интересной части. А именно – как написать бот для парсинга в Telegram. Для этого мы будем использовать один из самых распространенных языков для программирования Python, но вы также можете выбрать JavaScript, Go и тому подобное. Все зависит от ваших потребностей и предпочтений.
Для начала нам нужно получить api_id и api_hash, для этого надо авторизоваться в разделе инструментов для разработчиков Telegram. После этого повторяйте следующие шаги:
- Выбираем “API development tools” и заполняем все необходимые поля.
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, хоть публично об этом и не пишут. Впрочем, это все можно очень просто пройти – надо лишь добавить немного креатива.