• AFFHUB CONNECT WARSAW MEETUP: купуй квитки за посиланням
  • AFFHUB CONNECT WARSAW MEETUP: купуй квитки за посиланням
  • AFFHUB CONNECT WARSAW MEETUP: купуй квитки за посиланням
img
img
  • 1433
  • 0
  • 0

Як створити бот для парсингу в Telegram

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

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

То ж сьогодні ми розповідаємо, для чого потрібні боти для парсингу в Telegram, як їх створити і яким чином використовувати. 

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

Відповідь настільки ж проста, як і запитання – для парсингу. Якщо це слово вам невідоме, то парсинг – це швидкий збір інформації, розташованої на сторінках. 

Такі боти можуть використовуватися для збору інформації про користувачів для подальших розсилок, аналізу активності каналів у Telegram та коментарів користувачів. Що з ними робити далі – справа лише вашої фантазії. 

Якщо говорити про те, як саме працюють ці боти, то дуже спрощено – їх можна використовувати в чатах і здебільшого в каналах. Для останнього є два виключення. 

Перше – якщо канал ваш і він налічує понад 200 підписників, його можна пропарсити. Друге – в каналі є чат, тоді механізм парсингу буде таким же, як і для чатів, але збір інформації буде проходити виключно серед підписників цього чату, а не каналу.

Як працюють боти для парсингу в Telegram?

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

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

Як створити бот для парсингу в Telegram? 

Що ж, переходимо до найцікавішої частини. А саме – як написати бот для парсингу в Telegram. Для цього ми будемо використовувати одну з найпоширеніших мов для програмування Python, але ви також можете обрати JavaScript, Go тощо. Усе залежить від ваших потреб та вподобань.

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

  1. Обираємо “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
02.04.2024
Зареєструйся, щоб залишити коментар
0
  • За рейтингом
  • По порядку
loading