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

Итак, без воды и SEO-оптимизации… погнали.

1. Учитесь на чужих ошибках, а не на своих!

Первый этап — это учетная запись в Телеграм. Да, вам нужна учетная запись и кстати по личным наблюдениям хочу сказать, что создать учетную запись на виртуальный номер и сразу использовать ее для парсера у вас в 70% случаев не получится. Ваш аккаунт просто исчезнет, поэтому настоятельно рекомендую использовать активные учетные записи в которых есть переписка ну или созданы они как минимум не сейчас. Но опять же пробовать на чистых не запрещено, просто пару раз улетали в бан они, а учиться лучше на чужих ошибках, рекомендую! Ничего запрещенного мы не совершаем, мы используем официальный доступ к серверам Телеграм и получаем только открытые общедоступные сведения! Не пытайтесь использовать функционал во вред. Хорошего вы не сделаете, а плохое вам ненужно.

2. Аккаунт разработчика. API_ID и API_HASH

Ну вот давайте к делу. Использовать мы будем Telethon библиотеку. Вот документация вам сразу в плечи. Сложноватая показалась, но может и я тупой.

Так вот, что бы подключиться через Telethon к Telegram нам как минимум нужно зарегистрировать наше приложение в самом Телеграм и получить от них API_ID и API_HASH ключики для дальнейшей работы.

Делается это все просто (если вы не голландец)

Идем регистрироваться как разработчик ура!

Тут нужен мобильный номер от вашей уже готовой учтеки. Туда код придет для входа.

Так, тут вот может возникнуть все что угодно. Вообще для наших нужд нужно заполнить только первые 2 строки. Платформу я выбирал Desktop. В любом случае вам нужно тут заполнить данные. Я это делал года 3 назад, поэтому экспериментируйте!

Если звезды сошлись и вы смогли все таки все данные заполнить, то получите вооот такую табличку

Тут половина таблички, я чувствительные данные затер. Но, что бы вы не получили, нам для работы сейчас нужно только App API_ID и App API_HASH.

Сохраняем и бережем, никому не даем не показываем не пересылаем иначе все будут сидеть с вашей учетки. Так себе перспектива.

Ну и все. Данные есть.

3. Структура проекта. Основные модули

Сложные времена рождают хороших программистов
Хорошие программисты рождают библиотеки
Библиотеки рождают плохих программистов
Плохие программисты порождают сложные времена.

Поговорили о насущном, поехали работать.

Любой проект нужно спланировать, спланировать его так, что бы я понял, ты понял и еще 100 человек поняли что и как там работает и куда можно всунуть лапки потом, что бы тебе помочь.

Поэтому я придумал это все так.

Модуль 1. Класс работы с Telethon.

В нем мы создадим ряд методов для авторизации в Телеграм, для получения списка подписчиков, для получения сообщений, еще пару технических запросов и естественно закрытие всего этого процесса взад.

Модуль 2. Класс работы с базой данных

Здесь аналогично. Коннект/дисконнект. запросы в базу все в виде класса с методами. А-ля SOLID и привет ООП.

Модуль 3. Модуль очистки данных

Суть в том, что Телетон пришлет нам список, содержащий объекты, которые нам отдает Телеграм. В объектах информации много и не вся нам нужна. Помимо этого у ряда объектов может быть определенный параметр ( прим. Фото профиля) или не быть. Гонять это через цикл в сыром виде будет громоздко, поэтому создаю отдельные классы в отдельном файле, которые будут забирать нужные мне поля с информацией из этих объектов и параллельно проверять есть ли там эти данные или нет. Сортировщик мусора его назовем.

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

Модуль 4. Отправка данных в базу.

Целесообразность данного модуля обусловлена желанием просто отделить функции отвечающие за очистку сырого массива информации от функций вызывающих методы 2 модуля ( Базы данных). Там мы будем просто собирать все переменные в кучу и отправлять в методы базы для внесения записей. Просто удобнее и читаемо получается.

Моудль 5. Узел центральной очереди.

Это по факту наш main.py где происходит старт программы и дальше мы выстраиваем порядок вызова наших работяг.

Приблизительно будет так

Старт -> Логин в Telegram -> Соединение с БД -> Создание таблиц в БД ( если их нет) -> Получение данные о чате -> Получение данных о подписчиках -> Получение списка сообщений-> Сортировщик чата -> Сортировщик пользователей -> Сортировщик сообщений->Закрытие соединения с БД -> Закрытие соединения с Telegram.

Внутри сортировщиков сразу будем вызывать отправку в базу данных.

В чем плюс этого модуля, казалось бы ну логично ну так и надо да.

Да, но эта очередь позволит вам самим даже увидеть, что здесь не хватает чего? Правильно параллельного запуска задач. Вот написали этот модуль и сразу поняли что тут можно все это запустить параллельно. Сообщения себе, пользователей себе, а чат и его внутреннюю инфу себе. Ну для наглядности и собственного прозрения. Самый полезный модуль получается.

Я художник, я так вижу. Дальше в следующей статье мы будем уже писать код и смотреть как это все будет работать. Спасибо за внимание. Продолжение следует.

Кстати да.
Наш Телеграм по парсингу
Наш Телеграм по Back-end
Наш ВК
Наш Youtube

Читайте другие статьи. Нет копипасту! Пишем сами, как понимаем!