Парсинг чатов telegram python

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

mmat16/telegram_channel_parser

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Читайте также:  Java enum type extends

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Для того чтобы пользоваться данным парсером вам необходимо установить Python3 и несколько сторонних библиотек с помощью данной команды:

На Windows: pip install -r requirements.txt

На Mac OS и Linux: pip3 install -r requirements.txt

Так же вам понадобится зарегистрировать собственное приложение Telegram. Для этого надо зайти на сайт https://my.telegram.org/apps, зайти в свою учётную запись Telegram и создать приложение (Create new application). Следует указать:

  • App title — название приложения (неважно какое)
  • Short name — сокращённое название (только буквы и цифры, 5-32 символа)
  • Platform — указать Other

Остальные поля можно оставить пустыми. Нажать кнопку Create application. В этот момент зачастую Telegram не пускает вас дальше по непонятным причинам, но главное не сдаваться. Иногда помогает прокликивание без изменения данных, иногда надо поменять App title или Short name. После того как ваше приложение будет зарегистрировано откроется следующая страница на которой будут указаны регистрационные данные вашего приложения. Стоит сохранить все данные в надёжном месте, но для работы парсера вам понадобятся графы App api_id и App api_hash. Их надо вставить в одноимённые переменные в файле config.py.

После установки библиотек и регистрации приложения, парсером можно пользоваться. Для этого:

  • зайдите в директорию с исходным кодом и вызовите парсер командой «python3 parser.py»
  • при первом запуске будет необходимо подтвердить вход через Telegram (двухфакторную аутентификацию лучше отключить на это время):
    • в консоли появится сообщение, после которого надо ввести номер телефона, привязанный к Telegram
    • после следующего сообщения ввести код подтверждения Telegram

    После получения ссылки сразу же начнётся сбор сообщений.
    В директории со скриптом появится папка с айди канала и журнал с расширением .log куда будут заносится отметки о работе скрипта. Внутри папки канала начнут появляться папки с названиями, соответствующими айди сообщения, а в них будет находится текстовый файл с текстом сообщения и зашитыми в него гиперссылками, а так же текстовый файл с «метаданными» — ссылкой на сообщение и датой и временем его отправки. Так же если к сообщению были приложены какие-либо медиа — они будут загружены в ту же папку.

    По умолчанию (при первом запуске) скрипт будет собирать сообщения за последние три месяца. Если же при повторном запуске в директории скрипта будет находится папка с ранне собранными сообщениями канала, то собраны будут только новые сообщения.

    Источник

    Saved searches

    Use saved searches to filter your results more quickly

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    Python script to parse a Telegram chat history backup (JSON) into tabular format (CSV). No extra packages required, only Python 3.x!

    License

    keizerzilla/telegram-chat-parser

    This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

    Name already in use

    A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

    Sign In Required

    Please sign in to use Codespaces.

    Launching GitHub Desktop

    If nothing happens, download GitHub Desktop and try again.

    Launching GitHub Desktop

    If nothing happens, download GitHub Desktop and try again.

    Launching Xcode

    If nothing happens, download Xcode and try again.

    Launching Visual Studio Code

    Your codespace will open once ready.

    There was a problem preparing your codespace, please try again.

    Latest commit

    Git stats

    Files

    Failed to load latest commit information.

    README.md

    Python script to parse a Telegram chat history backup ( JSON ) into tabular format ( CSV ). No extra packages required, only Python 3.x!

    Using Telegram’s Desktop or Web interfaces, go to the chat you want to backup, click on the options button (three dots in the upper right corner) and them click on Export chat history . In the dialog window, right next to Format , chose JSON . After the backup is completed, Telegram will generate a results.json file. This will be the input of our script.

    Next, navigate to the directory where the results.json is located and make sure that the script is accessible, probably by placing it next to the results file. Then, run the script by typing:

    python3 telegram-chat-parser.py results.json

    For each chat backup in results.json , a .csv file will be created in the same directory. The output filename is a stripped down version of the actual chat name (only letters and numbers are kept).

    Once the script is done parsing, the result CSV file will have the format bellow:

    • msg_id : the unique identifier of the message
    • sender : the literal name of the sender
    • sender_id : the unique identifier of the sender
    • reply_to_mesg_id : if the message is a reply, this column will store the id of that message, or -1 otherwise
    • date : date time stamp of the message
    • msg_type : can be one of the following: text, sticker, file, photo, poll, location or link
    • msg_content : the text content the message, already cleaned in terms of newline and spaces; if the message was not a text (sticker, media, etc) this field will store the path pointing to the media
    • has_mention : it will be 1 if there’s a mention in the text, 0 otherwise
    • has_email : it will be 1 if there’s a email in the text, 0 otherwise
    • has_phone : it will be 1 if there’s a phone contact in the message, 0 otherwise
    • has_hashtag : it will be 1 if there’s a hashtag in the text, 0 otherwise
    • is_bot_command : it will be 1 if the message is a bot command, 0 otherwise

    I hope this little script helps you in your project! If you have any suggestions or ideas to improve it, please feel free to open an issue. Thank you!

    About

    Python script to parse a Telegram chat history backup (JSON) into tabular format (CSV). No extra packages required, only Python 3.x!

    Источник

    Телеграм. Как собрать информацию из чатов. Часть 1

    Телеграм. Как собрать информацию из чатов. Часть 1

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

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

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

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

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

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

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

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

    Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №2

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

    Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №3

    Сразу оговорюсь, данных будет немного больше, но нам важны параметры 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 вас попросит ввести ваш номер телефона или токен бота

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

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

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

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

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

    about_me = await client.get_entity('me')

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

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

    Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №7

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

    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)

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

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

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

    прим. автора

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

    Полный код парсера Телеграм

    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() 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()) 

    Источник

Оцените статью