Практика работы с Telegram
Парсер сообщений Telegram на Python: пример CSV
Небольшой пример чтения последних сообщений своего доступного канала через Telethon. Подготовка, код и проверка результата.
Когда нужен скрипт
Готовый парсер удобен для штатной задачи с формой и журналом. Скрипт нужен, когда требуется своя схема выгрузки, обработка текста или интеграция. В этом примере собираются сообщения, а не список участников и не скрытые телефоны.
Для запуска подготовьте 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.
Проверка результата и ошибки
- Откройте CSV с кодировкой UTF-8 и разделителем-запятой.
- Сравните несколько ID и дат с исходным каналом. Пустой текст у сообщения с медиа допустим.
- Если messages.csv уже существует, перенесите старый файл в отдельное место или задайте другое имя. Скрипт специально не перезаписывает его.
- При отсутствии доступа проверьте источник тем же аккаунтом в Telegram. При требовании ожидания повторяйте после указанного времени.
- Не запускайте несколько процессов с одним reader.session. Сохраните сессию отдельно от таблицы, которую передаёте аналитику.
Перед публикацией примера выполнена проверка синтаксиса; вход в Telegram и чтение пользовательских каналов в рамках этой статьи не выполнялись.
Комментарии и анализ с ИИ
Комментарии канала связаны с обсуждением. Приведённый код выгружает верхний уровень сообщений указанного источника и не обещает автоматически собрать все ветки комментариев. Для анализа обсуждений задайте отдельный источник и проверьте связи ответов.
ИИ может группировать уже собранные обезличенные тексты по темам. Сохраните исходные сообщения для проверки выводов: количество найденных вопросов не равно размеру рынка и не подтверждает намерение купить. Для участников и аудиторий используйте экспорт парсера Telecobra.
Источники и документация
Одна платформа · разные задачи
Подписка Telecobra
Соберите инструменты для работы с Telegram в одном кабинете. Сроки доступа, цены и условия — на странице подписки.
В этой инструкции описана только часть возможностей платформы. Полный список доступен в разделе функций.