- 1433
- 0
- 0
Як створити бот для парсингу в Telegram
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, хоч публічно про це й не пишуть. Втім, це все можна дуже просто пройти – треба лише додати трохи креативу.
- 1433
- 0
- 0
- За рейтингом
- По порядку


