Перейти к содержимому
Документация
Автоматизация (Режимы)

Парсинг

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