Практика работы с Telegram

Парсер сообщений Telegram на Python: пример CSV

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

Редакция Telecobra · Обновлено 18 сентября 2026

Когда нужен скрипт

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

Для запуска подготовьте Python в отдельном окружении, библиотеку Telethon и параметры собственного Telegram-приложения. Учебный пример рассчитан на интерфейс Telethon 1.x. Установите python -m pip install "Telethon>=1.45,<2". Авторизация выполняется владельцем аккаунта.

Подготовка переменных

Задайте TG_API_ID, TG_API_HASH и TG_SOURCE средствами вашей оболочки. TG_SOURCE — username или ссылка на ваш доступный канал. Сохраните код как export_messages.py в отдельной папке. Не помещайте ключи в публикуемый репозиторий.

При первом запуске библиотека может запросить телефон, код и пароль 2FA. Файл reader.session появится рядом со скриптом в рабочей папке запуска. При следующем запуске не меняйте путь без необходимости. Скрипт читает сообщения, не публикует посты и не рассылает сообщения.

Код выгрузки

import asyncio, csv, os
from pathlib import Path
from telethon import TelegramClient

async def main():
    session = str(Path("reader.session").resolve())
    client = TelegramClient(session, int(os.environ["TG_API_ID"]),
                            os.environ["TG_API_HASH"])
    async with client:
        source = os.environ["TG_SOURCE"]  # свой доступный канал
        rows = []
        async for msg in client.iter_messages(source, limit=100):
            text = msg.raw_text or ""
            # Не даём табличному редактору исполнять текст как формулу.
            if text.lstrip().startswith(("=", "+", "-", "@")):
                text = "'" + text
            rows.append([msg.id, msg.date.isoformat(), text])
        # Режим x защищает предыдущую выгрузку от перезаписи.
        with open("messages.csv", "x", encoding="utf-8-sig", newline="") as f:
            writer = csv.writer(f)
            writer.writerow(["message_id", "date_utc", "text"])
            writer.writerows(rows)
        print(f"Сохранено сообщений: {len(rows)}")

if __name__ == "__main__":
    asyncio.run(main())

Запуск: python export_messages.py. В файле будут ID, дата и текст. Список ограничен 100 последними доступными сообщениями. Изображения и другие вложения не скачиваются. Это самостоятельный учебный пример; он не запускает задачу в Telecobra.

Проверка результата и ошибки

  1. Откройте CSV с кодировкой UTF-8 и разделителем-запятой.
  2. Сравните несколько ID и дат с исходным каналом. Пустой текст у сообщения с медиа допустим.
  3. Если messages.csv уже существует, перенесите старый файл в отдельное место или задайте другое имя. Скрипт специально не перезаписывает его.
  4. При отсутствии доступа проверьте источник тем же аккаунтом в Telegram. При требовании ожидания повторяйте после указанного времени.
  5. Не запускайте несколько процессов с одним reader.session. Сохраните сессию отдельно от таблицы, которую передаёте аналитику.

Перед публикацией примера выполнена проверка синтаксиса; вход в Telegram и чтение пользовательских каналов в рамках этой статьи не выполнялись.

Комментарии и анализ с ИИ

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

ИИ может группировать уже собранные обезличенные тексты по темам. Сохраните исходные сообщения для проверки выводов: количество найденных вопросов не равно размеру рынка и не подтверждает намерение купить. Для участников и аудиторий используйте экспорт парсера Telecobra.

Источники и документация

Одна платформа · разные задачи

Подписка Telecobra

Соберите инструменты для работы с Telegram в одном кабинете. Сроки доступа, цены и условия — на странице подписки.

В этой инструкции описана только часть возможностей платформы. Полный список доступен в разделе функций.