3
Как забрать информацию из чатов в Телеграм используя Python | Паблико
2 подписчики

Как забрать информацию из чатов в Телеграм используя Python


08 фев 2022 · 17:59    



telegram-5772057_1280.png 1.19 MB



Часть 1: Регистрация аккаунта разработчика и настройка клиента

Всем привет! Парсинг сайтов — дело веселое, можно использовать эти данные для своего ресурса или же делать это на заказ. А что если скачать, к примеру, все сообщения из телеграм-чата или список его участников, а затем использовать эти данные для аналитики или еще лучше, для формирования своей базы данных пользователей, которым интересна та или иная тема.

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

Для создания отдельного клиента хорошо подойдет асинхронная библиотека «Telethon» (Вот репозиторий библиотеки). Сама библиотека может использоваться как для создания телеграм-ботов, так и для создания отдельных приложений работающих с API Telegram. Главным преимуществом является понятная документация в которой можно найти ответы на все вопросы (необходимо знание английского языка).

Создание нашего проекта начнем с регистрации аккаунта разработчика здесь



Z9TvxphYWhw.jpg 75.16 KB



Регистрация разработчика

Вводим пришедший в Telegram численно-буквенный код и попадаем на страницу регистрации нового приложения. Заполняем форму, достаточно первых двух граф:



2qtofm9TGtM.jpg 47.85 KB


Если все введено верно вы увидите следующие сведения.



PgxcDKBeonU.jpg 23.72 KB



Сразу оговорюсь, данных будет немного больше, но нам важны параметры App api_id и App api_hash.

Поздравляю! Вы зарегистрировали ваше приложение в API Telegram. Закрывать страничку пока не стоит. Мы будем брать оттуда значения App api_id, App api_hash, Short_name для нашего приложения.


Переходим в PyCharm

Хорошим тоном будет не хранить в коде наш хэш и app_id, поэтому давайте сделаем красиво =) Используем библиотеку configparser для создания файла настроек. Создайте в корне проекта файл с расширением .ini (пример config.ini) и давайте поместим туда наши данные из аккаунта разработчика который мы зарегистрировали.



Файл config.ini


И да, я знаю про venv и переменные окружения. Вы можете использовать удобный вам метод.

Далее нас ждет самое интересное. Давайте установим в наш проект саму библиотеку Telethon командой «pip install telethon» и импортируем в проект класс TelegramClient из нашей установленной библиотеки.

import configparser
from telethon import TelegramClient

Далее давайте настроим передачу наших данных в подключение из файла настроек

config = configparser.ConfigParser()
config.read("config.ini")# Присваиваем значения внутренним переменным
api_id: str = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
username = config['Telegram']['username']client = TelegramClient(username, api_id, api_hash)client.start()

Обратите внимание что в файле «config.ini» первой строкой мы указали [Telegram]. С помощью этих тэгов мы просто не будем путаться в переменных настроек и разделять их в одном файле.

Создадим нашу главную функцию и запросим у сервера телеграм сведения о нас.

async def main():
    about_me = await client.get_entity('me')
    print(about_me)

Наша библиотека Telethon асинхронная а значит функции и методы мы будем использовать с добавлением ключевых слов async и await (кстати можно и без них но не рекомендую)

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

with client:
    client.loop.run_until_complete(main())
Наше приложение готово к запуску.

……почти =)

При первом запуске в консоли PyCharm вас попросит ввести ваш номер телефона или токен бота



YfGYnIPPMYQ.jpg 20.8 KB


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

Вводите ваш номер телефона в международном формате без «+»



8F436XU7x60.jpg 24.62 KB


Вам снова пришел код в аккаунт телеграмм только теперь из 5 цифр. Введите их.

Поздравляю вы запустили ваш клиент Телеграм.



LWWX09PI0eE.jpg 37.08 KB


Так что же вернула нам наша функция main

about_me = await client.get_entity('me')

наша переменная about_me теперь содержит объект User с специфическим типом данных библиотеки telethon.

Внутри объекта вы можете увидеть данные о вашем аккаунте.

Для того, что бы посмотреть отдельные сведения давайте сделаем вот такой код

async def main():
    about_me = await client.get_entity('me')print('Имя:', about_me.first_name)
    print('Ник:', about_me.username)
    print('Id', about_me.id)
    print('Телефон', about_me.phone)

И вуаля….

Имя: Le****k

Ник: Da*****st

Id 1060217*****

Телефон 375297******

Ну в вашем случае звездочек не будет.

Только что сервер Телеграм рассказал вам о вас чуть больше чем вы видите в своем аккаунте. В следующей мы немного обнаглеем и соберем с серверов Телеграм сведения об участниках какого-нибудь чата.

Утечка данных из Telegram — проблема Telegram.

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

По традиции полный код:

import configparser
from telethon import TelegramClientconfig = configparser.ConfigParser()
config.read("config.ini")# Присваиваем значения внутренним переменным
api_id: str = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
username = config['Telegram']['username']client = TelegramClient(username, api_id, api_hash)client.start()async def main():
    about_me = await client.get_entity('me')print('Имя:', about_me.first_name)
    print('Ник:', about_me.username)
    print('Id', about_me.id)
    print('Телефон', about_me.phone)with client:
    client.loop.run_until_complete(main())



telegram-5772057_1280.png 1.19 MB



Часть 1: Регистрация аккаунта разработчика и настройка клиента

Всем привет! Парсинг сайтов — дело веселое, можно использовать эти данные для своего ресурса или же делать это на заказ. А что если скачать, к примеру, все сообщения из телеграм-чата или список его участников, а затем использовать эти данные для аналитики или еще лучше, для формирования своей базы данных пользователей, которым интересна та или иная тема.

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

Для создания отдельного клиента хорошо подойдет асинхронная библиотека «Telethon» (Вот репозиторий библиотеки). Сама библиотека может использоваться как для создания телеграм-ботов, так и для создания отдельных приложений работающих с API Telegram. Главным преимуществом является понятная документация в которой можно найти ответы на все вопросы (необходимо знание английского языка).

Создание нашего проекта начнем с регистрации аккаунта разработчика здесь



Z9TvxphYWhw.jpg 75.16 KB



Регистрация разработчика

Вводим пришедший в Telegram численно-буквенный код и попадаем на страницу регистрации нового приложения. Заполняем форму, достаточно первых двух граф:



2qtofm9TGtM.jpg 47.85 KB


Если все введено верно вы увидите следующие сведения.



PgxcDKBeonU.jpg 23.72 KB



Сразу оговорюсь, данных будет немного больше, но нам важны параметры App api_id и App api_hash.

Поздравляю! Вы зарегистрировали ваше приложение в API Telegram. Закрывать страничку пока не стоит. Мы будем брать оттуда значения App api_id, App api_hash, Short_name для нашего приложения.


Переходим в PyCharm

Хорошим тоном будет не хранить в коде наш хэш и app_id, поэтому давайте сделаем красиво =) Используем библиотеку configparser для создания файла настроек. Создайте в корне проекта файл с расширением .ini (пример config.ini) и давайте поместим туда наши данные из аккаунта разработчика который мы зарегистрировали.



Файл config.ini


И да, я знаю про venv и переменные окружения. Вы можете использовать удобный вам метод.

Далее нас ждет самое интересное. Давайте установим в наш проект саму библиотеку Telethon командой «pip install telethon» и импортируем в проект класс TelegramClient из нашей установленной библиотеки.

import configparser
from telethon import TelegramClient

Далее давайте настроим передачу наших данных в подключение из файла настроек

config = configparser.ConfigParser()
config.read("config.ini")# Присваиваем значения внутренним переменным
api_id: str = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
username = config['Telegram']['username']client = TelegramClient(username, api_id, api_hash)client.start()

Обратите внимание что в файле «config.ini» первой строкой мы указали [Telegram]. С помощью этих тэгов мы просто не будем путаться в переменных настроек и разделять их в одном файле.

Создадим нашу главную функцию и запросим у сервера телеграм сведения о нас.

async def main():
    about_me = await client.get_entity('me')
    print(about_me)

Наша библиотека Telethon асинхронная а значит функции и методы мы будем использовать с добавлением ключевых слов async и await (кстати можно и без них но не рекомендую)

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

with client:
    client.loop.run_until_complete(main())
Наше приложение готово к запуску.

……почти =)

При первом запуске в консоли PyCharm вас попросит ввести ваш номер телефона или токен бота



YfGYnIPPMYQ.jpg 20.8 KB


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

Вводите ваш номер телефона в международном формате без «+»



8F436XU7x60.jpg 24.62 KB


Вам снова пришел код в аккаунт телеграмм только теперь из 5 цифр. Введите их.

Поздравляю вы запустили ваш клиент Телеграм.



LWWX09PI0eE.jpg 37.08 KB


Так что же вернула нам наша функция main

about_me = await client.get_entity('me')

наша переменная about_me теперь содержит объект User с специфическим типом данных библиотеки telethon.

Внутри объекта вы можете увидеть данные о вашем аккаунте.

Для того, что бы посмотреть отдельные сведения давайте сделаем вот такой код

async def main():
    about_me = await client.get_entity('me')print('Имя:', about_me.first_name)
    print('Ник:', about_me.username)
    print('Id', about_me.id)
    print('Телефон', about_me.phone)

И вуаля….

Имя: Le****k

Ник: Da*****st

Id 1060217*****

Телефон 375297******

Ну в вашем случае звездочек не будет.

Только что сервер Телеграм рассказал вам о вас чуть больше чем вы видите в своем аккаунте. В следующей мы немного обнаглеем и соберем с серверов Телеграм сведения об участниках какого-нибудь чата.

Утечка данных из Telegram — проблема Telegram.

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

По традиции полный код:

import configparser
from telethon import TelegramClientconfig = configparser.ConfigParser()
config.read("config.ini")# Присваиваем значения внутренним переменным
api_id: str = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
username = config['Telegram']['username']client = TelegramClient(username, api_id, api_hash)client.start()async def main():
    about_me = await client.get_entity('me')print('Имя:', about_me.first_name)
    print('Ник:', about_me.username)
    print('Id', about_me.id)
    print('Телефон', about_me.phone)with client:
    client.loop.run_until_complete(main())
Читайте также

Комментарии 2

Войдите для комментирования
Полезная статья)). Давайте дружить каналами? Я на вас уже подписалась😊.
Скинул себе в избранное, думаю, пригодится. Дружим каналами?
НОВОСТИ ПОИСК РЕКОМЕНД. НОВОЕ ЛУЧШЕЕ ПОДПИСКИ