Как парсить telegram канал при помощи php

Обновлено: 19.09.2024

Парсинг ленты со своего канала в Telegram с помощью бота Journalist и php-скриптов.

Парсим посты с Telegram на свой сайт с помощью бота Journalist

Инструкция о том, как подключить ленту со своей "Телеги" на сайт.

Шаг 1. Создаем публичный Telegram-канал

В мобильном официальном приложении Telegram, в меню, нажимаем кнопку "Создать канал" , после чего вводим "Имя канала" и его "описание".

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

Не забывайте про релевантность заголовка тематике материала публикуемого в вашем канале.

Не забудьте загрузить картинку для канала.

Укажите тип аккаунта: "Публичный". Если указан будет "Частный канал", то на него можно будет попасть только по приглашению.

После завершения создания напишите свой первый пост.

При необходимости информацию можно отредактировать в настройках канала:

Telegram - настройки канала

Шаг 2. Подключаем бота Journalist к своему чату

Необходимо добавить бота "Journalist" к себе в чаты.

Далее перейти в мобильной версии в свой канал, щелкнуть по названию канала, далее нажать шестеренку для входа в настройки.

Выбираем пункт "Администраторы" и нажимаем "Добавить администратора", далее вводим в поиск идентификатор бота: @JournalistBot и добавляем его в администраторы своего чата.

Затем переходим в чат с ботом "Журналист", где вводим команду: /start

Выскочить меню, где выбираем пункт "Настройки":

Запускаем бота Journalist

После этого создаем ключ:

Генерируем ключ для бота Journalist

Переходим в свой чат и вставляем одноразовый ключ в формате: /join ******************************

Шаг 3. Размещаем скрипт на своем сайте

Бот рекомендует следующее:

Код для вставки трансляции на сайт:

Код для вставки виджета трансляции на сайт:

Вставляем это на сайт в нужном нам месте.

Последняя цифра в названии файла -*.js -означает количество постов отображаемых в ленте.

Шаг 4. Модифицируем скрипт Journalist

Создаем папку broadcasts в корне сайта.

Скрипт парсер JS файлов

Создаем php-скрипт с произвольным названием, к примеру downloadjs.php с таким содержимом:

Кеширование отдельного скрипта в .htacess

Задаем специальное кеширование скрипта на 6 часов в .htaccess:

Обновление скрипта по CRON

Ставим выполнение обновления скрипта на крон (раз в час).

Если используется хостинг Таймвеб, то Выбираем тип " Скрипт PHP X.X", указываем путь до php-скрипта и задаем время:

Настраиваем cron-задачу на хостинге Таймвеб

После этих манипуляций меняем путь к скрипту при его подключении - заменяем домен journali.st на свой домен!

Вывод

Создание ленты публикаций на основе Телеграм-канала интересное занятие.

Результат работы скрипта виден в боковой панели или в внизу (в мобильной версии).

На 2021 год боты в Telegram так и не имеют метода, позволяющего получать информацию о подписчиках канала. Тем не менее, существует достаточно сложное в освоении Telegram API и построенная на нём библиотека Telethon. Сегодня мы посмотрим, как при помощи библиотеки выгрузить информацию о подписчиках своего канала.

Создание приложения


После успешной авторизации перейдите на страницу API development tools:


Заполните все поля и жмите на создание приложения:


Из полученной конфигурации нам необходим app api_id и app api_hash:


Запрос к API

Импортируем telethon — он поможет сформировать запрос, и pandas — полученный ответ мы запишем в DataFrame.

Вводим api_id, api_hash, наш номер телефона и ссылку на канал, информацию о подписчиках которого хотим получить. Доступ к информации о подписчиках есть только у администраторов канала.

Создаём новую сессию — вместо session_name можно подставить любое другое название. Методы в библиотеке работают асинхронно, поэтому ответа от них требуется ожидать:

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

Подписчиков, доступ к которым не ограничен приватностью, можно получить методом get_participants. С 20 июля 2018 года Telegram установил ограничение в 200 подписчиков для вызова метода, и установка параметра aggressive на True поможет получить всех подписчиков за раз.

Из полученных библиотечных структур извлекаем информацию о пользователях — их имена и телефоны:

Из четырёх списков собираем DataFrame и пишем его в csv-таблицу:

Результат работы — такая таблица:


Для запуска в Jupyter Notebook описанный ниже код можно просто вставить в ячейку, но при запуске из Python-файла будет такая ошибка:

Устранить проблему можно, записав весь код в асинхронную функцию. Целиком выглядеть код будет так:

Парсер – специальная программа, целью которой является нахождение определённого фрагмента путём обработки потока данных в автономном режиме. Хоть данная формулировка и кажется отталкивающей, но пугаться не стоит, потому что, работать с парсером легко и просто. Телеграм парсинг чатов является инструментом для сбора информации по определённым критериям. Чтобы научиться правильно парсить информацию, следует научиться правильно выбирать участки кода и задавать их в качестве условий для парсинга.

Зачем нужен парсер?

сбор информации с помощью парсера

Для начала нужно ознакомиться с возможностями программ данного типа, понять для чего они нужны и что умеют делать:

  • Непрерывное отслеживание информации с целью поддержания её актуальности. Например, круглосуточно следить за курсом валют или прогнозом погоды в ручном режиме – занятие, лишённое смысла, потому что целесообразней заменить ручной труд на парсинг.
  • Сбор информации из интернет-источников с целью наполнения собственного ресурса. К такому действию часто прибегают сайты или группы в социальных сетях. Множество кулинарных ресурсов, киносайтов и прочих площадок наполняются контентом именно при помощи парсинга. Полученная таким путём информация подвергается рерайту (содержание статьи переписывается своими словами, но суть остаётся прежней).
  • Аналитика нескольких потоков данных по определённому критерию. Обрабатывается большое количество информации из нескольких источников. Такой способ более затратный и актуален для отслеживания упоминаний бренда или отдельной фразы.
  • Сбор личных данных или контактов. Например, сбор базы подписчиков определённой группы в социальной сети. К данному методу прибегают с целью последующего инвайта (приглашение пользователей присоединиться к группе, каналу и т.п.).

Какие существуют парсеры для Телеграм

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

Обычно, парсеры бывают следующего вида:

Боты Телеграм сэкономят ваше время

  • Специальные программы (скрипты);
  • Утилиты, работающие в браузерном режиме.

Парсеры для сбора и аналитики информации

Такой парсер Телеграм каналов создаётся под заказ для определённых целей. Например, на рисунке, представленном ниже видно объявление о поиске исполнителя для создания плагина, целью которого является сбор информации о каналах Телеграм. Сбор информации необходим по следующим критериям:

Парсер каналов Телеграм и как им пользоваться

Объявление о поиске исполнителя для создания парсера каналов Telegram.

Критерии, по которым ведут отбор такие программы, могут быть какие угодно. Основная цель – отбор и анализ, а анализ чего или с какой целью здесь уже определяет каждый сам для себя. Именно то этой причине парсеры создаются индивидуально, в соответствии с требованиями и пожеланиями заказчика.

Парсеры для сбора контактов аудитории

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

парсер контактов аудитории

Окно парсера, со списком никнеймов аудитории.

Парсеры боты

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

Окно настройки бота - диалог

предложение покупки аудитории у бота

Предложение о покупки рекламы у бота парсера. Здесь можно купить рекламу.

Как использовать парсеры и где их искать

Конечно, лучше всего использовать парсеры для сбора информации с целью её аналитики, например, поиск актуальных новостей в какой-либо сфере.

парсер позволяет находить заголовки интересных новостей

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

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

Где искать парсеры, а также людей, которые могут с ними обращаться:

  • Парсеры для сбора контактов участников чата или группы находят в свободном доступе на тематических сайтах или форумах.
  • Парсеры-боты можно найти, так же как и предыдущий вариант, на тематических форумах или введя запрос в поисковой строке интернет-браузера.
  • Парсеры для сбора информации по определённым критериям создаются для определённых целей, поэтому в свободном доступе их нет. Как правило, подобные программы разрабатываются специалистами, которых можно найти через знакомых или на биржах фриланса.
  • Можно ввести запрос в поисковую строку Телеграм или других социальных сетях. Данная тема актуальна и поиск не будет долгим.

Выдача Телеграм на поисковый запрос - пример

Результаты выдачи по поисковому запросу в Telegram

Таким образом вы найдете группу одного из парсеров в T elegram.

пример группы одного парсера Телеграм

Группа одного из парсеров в Telegram.

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

Пишем простой граббер для Telegram чатов на Python

Для указанных задач будет использоваться Python не ниже версии 3.5, а также высокоуровневая библиотека для работы с Telegram API – Telethon. Установить библиотеку можно с помощью менеджера пакетов pip :

Регистрируем в Telegram новое приложение

Для подключения к Telegram API необходимы api_id и api_hash . Эти параметры выдаются при регистрации приложения в инструментах разработчика (при отсутствии доступа используйте VPN). Для авторизации указываем номер телефона, к которому привязан аккаунт Telegram.

Пишем простой граббер для Telegram чатов на Python

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

Пишем простой граббер для Telegram чатов на Python

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

Избегая проблем с безопасностью, сохраняем учетные данные в отдельном файле config.ini следующей структуры:

Поле username далее будет использоваться лишь для автоматического сохранения сессии под именем username.session . Одному клиенту соответствует одна сессия, учтите это в случае запуска нескольких клиентов.

Создаем клиент Telegram

Начнем с импорта библиотек.

Теперь считаем учетные данные из config.ini :

Создадим объект клиента Telegram API:

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

При первом запуске платформа запросит номер телефона, и вслед – код подтверждения. Так же, как если бы вы входили в учетную запись в приложении или браузере.

Для сбора, обработки и сохранения информации мы создадим две функции:

Обе функции будут вызываться в теле функции main , в которой пользователь передаст ссылку на интересующий источник:

Касательно написания вызова функций стоит оговориться, что Telethon является асинхронной библиотекой. Поэтому в коде используются операторы async и await. В связи с этим функция main полностью будет выглядеть так:

Заметим, что из-за асинхронности Telethon может некорректно работать в средах, использующих те же подходы (Anaconda, Spyder, Jupyter).

Рекомендуемым способом управления клиентом является менеджер контекстов with . Его мы запустим в конце скрипта после описания вложенных в main функций.

Собираем данные об участниках

Telegram не выводит все запрашиваемые данные за один раз, а выдает их в пакетном режиме, по 100 записей за каждый запрос.

Устанавливаем ограничение в 100, начинаем со смещения 0, создаем список всех участников канала all_participants . Внутри бесконечного цикла передаем запрос GetParticipantsRequest .

Проверяем, есть ли у объекта participants свойство users . Если нет, выходим из цикла. В обратном случае добавляем новых членов в список all_participants , а длину полученного списка добавляем к смещению offset_user . Следующий запрос забирает пользователей, начиная с этого смещения. Цикл продолжается до тех пор, пока не соберет всех фолловеров канала.

Самый простой способ сохранить собранные данные в структурированном виде – воспользоваться форматом JSON. Базы данных, такие как MySQL, MongoDB и т. д., стоит рассматривать лишь для очень популярных каналов и большого количества сохраняемой информации. Либо если вы планируете такое расширение в будущем.

В JSON-файле можно хранить и всю информацию о каждом пользователе, но обычно достаточно лишь нескольких параметров. Покажем на примере, как ограничиться набором определенных данных:

Итак, для каждого пользователя создается свой словарь данных и добавляется в общий список all_user_details , который записывается в JSON-файл.

Таким образом, с помощью Python и Telethon мы написали скрипт, собирающий и сохраняющий данные и реплики участников сообществ Telegram.

Читайте также: