Парсинг
Сбор данных из Telegram: история сообщений, поток новых сообщений или список участников группы — с фильтрами и выгрузкой в CSV, XLSX, JSON или SQLite.
Парсинг собирает данные из Telegram и складывает их в файл. Режим решает две разные задачи: выгрузить состав группы или собрать сообщения — либо разово из истории, либо в непрерывном мониторинге.
В отличие от рассылочных режимов, цели здесь не делятся между аккаунтами: каждый поток проходит весь список целей целиком и пишет собственный файл, в имени которого есть номер аккаунта. Поэтому парсинг обычно запускают на одном аккаунте.
Что собираем
Поле Что парсить задаёт первую развилку и определяет, какие настройки появятся ниже.
| Вариант | Что собирается | Колонки в файле |
|---|---|---|
| Сообщения (по умолчанию) | Сообщения из каналов, чатов и постов | target, id, date + выбранные поля |
| Участников в группе | Состав группы или канала | first_name, last_name, phone, username, user_id, target |
Список целей задаётся в поле Цели — по одной строке на цель: ссылка, @username или числовой
ID. Цели обходятся по очереди, строки со всех целей попадают в один файл, а колонка target
показывает, откуда взята запись.
Сообщения: парсер или ожидатель
Вторая развилка — поле Режим работы, по умолчанию Парсер. Видно, только если выбрано «Сообщения».
Парсер забирает уже существующую историю: идёт постранично вглубь каждой цели, пока не упрётся в лимит сообщений или в конец истории, после чего переходит к следующей цели. Работа конечна — после последней цели файл записывается один раз и режим завершается.
Ожидатель устроен иначе. Сначала он по каждой цели запоминает id последнего существующего сообщения — это точка отсчёта, вся старая история игнорируется. Дальше он бесконечно ходит по целям по кругу и забирает только то, что появилось после точки отсчёта. Файл при этом перезаписывается на каждом круге, где были новые сообщения, — накопленный результат виден прямо во время работы.
Наборы лимитов и задержек у сценариев разные:
| Поле | Сценарий | По умолчанию | Назначение |
|---|---|---|---|
| Сообщений на цель | Парсер | 500 | Сколько сообщений просмотреть в одной цели, прежде чем идти дальше |
| Задержка между целями | Парсер | 5 сек | Пауза перед переходом к следующей цели |
| Задержка между запросами | Парсер | 2 сек | Пауза между страницами истории, защита от FloodWait |
| Интервал проверки | Ожидатель | 15 сек | Пауза между полными кругами по всем целям |
| Задержка между целями | Ожидатель | 3 сек | Пауза перед опросом каждой цели внутри круга |
| Остановить после N сообщений | Ожидатель | 0 — без ограничения | Предохранитель по количеству пойманных сообщений |
| Макс. время мониторинга, мин | Ожидатель | 0 — без ограничения | Предохранитель по времени работы |
| Участников парсить | Участники | 5000 | Максимум участников с одной цели |
| Задержка между запросами | Участники | 3 сек | Пауза между страницами списка участников |
Задержки здесь — точные значения в секундах, а не диапазон: сколько поставили, столько и будет.
Условия остановки ожидателя проверяются в конце каждого круга, а не после каждого сообщения. Поставили «остановить после 100» — соберётся 100 или чуть больше, круг доводится до конца. Два нуля одновременно означают, что режим не остановится сам, его придётся снимать вручную.
Что попадает в строку
Поле Извлекаемые данные управляет составом колонок для сообщений; по умолчанию отмечен только
Отправитель. Колонки target, id и date пишутся всегда.
| Вариант | Что добавляет |
|---|---|
| Отправитель | from_id, username, first_name |
| Текст | text — текст сообщения |
| Медиа | media — тип вложения (фото, видео и т. п.). Сами файлы не скачиваются |
Фильтры
Блок фильтров по умолчанию пуст — сохраняется всё, что собрано. Фильтры работают только для сообщений и применяются после загрузки, уже на стороне Multogram.
- Поиск по словам — включает поле Ключевые слова, слова через запятую. Регистр не важен, совпадение по вхождению в текст; строка сохраняется, если найдено хотя бы одно слово из списка.
- По дате — включает поле Диапазон дат сообщений. Сообщения вне диапазона отбрасываются. Если задана только нижняя граница, верхней просто не будет.
Важное следствие: лимит Сообщений на цель считает просмотренные сообщения, а не попавшие в файл. С узким фильтром из 500 просмотренных в выгрузку может уйти три строки — это нормальная работа, а не ошибка.
Куда сохраняется
Куда сохранить (по умолчанию C:/sessions/parsed) — папка выгрузки, создаётся автоматически,
если её нет. Имя файла собирается само: тип парсинга, номер аккаунта и метка времени — например
messages_79001234567_1712345678901.csv. Из-за этого прогоны и аккаунты не затирают файлы друг
друга.
Формат экспорта — CSV, XLSX, JSON или SQLite (.db). По умолчанию отмечены CSV и XLSX, но
на выходе всегда один файл: при нескольких отмеченных форматах применяется один по приоритету
SQLite → XLSX → JSON → CSV. Со стандартными настройками это .xlsx. Отмечайте один формат, чтобы не
гадать.
В SQLite данные кладутся в таблицу parsed, в JSON пишется форматированный массив объектов, в CSV
разделитель — запятая. Если собирать было нечего, файл не создаётся: в лог уходит запись
ExportData: no rows to write.
Как проходит сбор
Подготовка. Список целей чистится от пустых строк, ключевые слова приводятся к нижнему регистру, даты переводятся в границы диапазона, формируется имя будущего файла.
Обход целей. Каждая цель обрабатывается в своём try/catch: ошибка на одной (нет доступа, неверная ссылка) не останавливает остальные, а уходит в лог.
Постраничная загрузка. Данные тянутся пачками — до 100 сообщений или до 200 участников за запрос, с паузой между запросами. Последняя пачка урезается ровно до остатка квоты.
Отбор строк. Применяются фильтры и выбранные поля, строка добавляется в общий набор.
Выгрузка. Файл записывается: у парсера и у сбора участников — один раз в конце, у ожидателя — заново на каждом круге с новыми сообщениями.
Ограничения и риски
- Доступ к цели. Аккаунт видит ровно то, что видел бы живой пользователь: в закрытую группу нужно вступить, а состав крупных сообществ Telegram отдаёт не полностью.
- Ожидатель забирает до 50 последних сообщений за один опрос цели. В очень активном чате при большом интервале проверки часть сообщений между опросами в файл не попадёт. Чем живее чат, тем короче должен быть интервал.
- Пагинация — самая частая причина FloodWait. Сбор идёт сплошным потоком запросов, поэтому занижать задержку между запросами опаснее, чем между целями.
- Дубли при нескольких аккаунтах. Каждый поток проходит весь список целей — два аккаунта соберут одно и то же дважды, в два разных файла.
- Ожидатель занимает аккаунт бесконечно. Пока он работает, аккаунт не освободится под другие задачи.
Рекомендации
- Один аккаунт на задачу парсинга. От добавления аккаунтов скорость не вырастет, а риск ограничений — вырастет.
- Проверяйте на одной цели. Поставьте лимит 20–50 сообщений, посмотрите получившийся файл и только потом запускайте полный сбор.
- Отмечайте только нужные поля. Текст и медиа заметно раздувают выгрузку, если вам нужны лишь отправители.
- Ожидателю обязательно ставьте предохранитель — лимит по сообщениям или по времени, иначе поток придётся останавливать руками.
- Для длинных сборов берите CSV или SQLite. XLSX собирается через полноценный файл Excel и на десятках тысяч строк заметно медленнее.
Ожидатель перезаписывает файл, а не дописывает его
На каждом круге с новыми сообщениями ожидатель заново пишет весь накопленный набор в тот же файл. Если держать его открытым в Excel, очередная запись может не пройти, а данные за круг — потеряться. Смотрите результат в копии файла или уже после остановки режима.
Редактор сообщений
Массовая правка уже отправленных сообщений: режим берёт записи из базы, сохранённой Рассыльщиком или Коммент-ботом, и переписывает текст тем же аккаунтом, который сообщение отправил.
Конвертер сессий
Пакетная конвертация файлов сессий между форматами Telethon, Pyrogram, TData и TData (Android) — работа только с файлами на диске, без запуска аккаунтов.