Вселенная Telegram и tech каналы
Телеграм сейчас является основным источником контента для многих. Стало интересно сделать анализ всех телеграм каналов: подписчики, рейтинги, частота статей, процент репостов, процент рекламы и т.д., поэтому посмотрел как можно достать данные. Какого-то сервиса, где можно сразу быстро и просто взять все каналы и набор метрик по ним, я не нашел, поэтому посмотрел что есть из готовых данных.
Существуют агрегаторы данных телеграм типа
tgstat. Похоже что наиболее простой способ - парсить данные агрегаторов. Варианты с ботами, виртуальными аккаунтами показались более затратными.
Итак, посмотрел несколько агрегаторов, взял на пробу три датасемпла. Самым адекватным показался семпл tgstat, поэтому, остановился на нем. В сервисе надо регистрироваться по телеграм аккаунту. Контент динамический, то есть, подгружается по клику. В парсинге всех данных не было смысла - важно было посмотреть что получится на семплах. Спарсил несколько категорий RU домена.
Сегодня расскажу про tech каналы с
этой страницы. Это каналы категориии 'Технологии', Россия. Есть несколько каналов из этой категории, читаю их ежедневно, ну и этот канал тоже о технологиях.
Теперь о парсинге. У tgstat есть защита от ботов, регистрация по телеграм аккаунту, динамический контент (не все загружается сразу). Питоновская библиотека requests здесь не работает. Playwright не может регистрироваться с внутренних браузеров - ошибка. Поэтому, делаем максимально 'человеческий' скрипт. Скрипт повторяет действия человека. Запускается Хром в режиме отладки, скрипт логинится, нажимает кнопки для загрузки контента в этом браузере и скачивает данные. Все сохраняется в csv, поля:
Категории
1. id канала
2. Техническое название канала с @ в начале
3. Название канала
4. Ссылка на лого канала
5. Описание канала
Метрики:
6. Число подписчиков
7. Дата последней активности
Сохраняем только каналы с числом подписчиков 100 и больше, и из 15и тысяч остается 7635. С названиями каналов есть нюансы в парсинге, но обойти можно.
Итого, датасет готов, можно покрутить и поискать инсайты. Лого скачал скриптом. Первые 20 каналов сильно выделяются на фоне остальных огромным числом подписчиков. Поэтому хотелось показать сразу все каналы, построить 'вселенную' каналов. Визуализация - packed bubbles c лого и размерами кругов пропорциональными числу подписчиков.
Теперь к самой визуализации. Packed bubbles можно делать различными способами и в разных средах. В BI - большие ограничения, питон - долго считает (пробовал, но ждать долго). Поэтому, победил Процессинг, сделал на p5js, алгоритм collide. В коде js есть 7 параметров, их можно настраивать, получая разные вариации диаграммы. Долго игрался с этим, в итоге, в комментах приложил 3 визуализации в разрешении 8k:
1. Каналы 100 и более подписчиков. 7635 штук.
2. Каналы 1000 - 100000 подписчиков. 4535 штук.
3. Каналы 10000 - 100000 подписчиков. 1009 штук.
Получились своего рода вселенные со звездами и планетами (самое то на fullscreen). На одной картинке можете видеть все каналы и представить масштабы контента в телеграм. Разрешение высокое, можно зумить и искать интересные каналы. Контент 3ей категории читаю больше всего, поэтому, сделал интерактивный виз в Tableau именно в этом диапазоне подписчиков. Координаты кругов взял из js.
Интерактив с фильтрами и хайлайтами в Tableau
Здесь можно найти канал, выбирать диапазон подписчиков и рейтинги на основе числа подписчиков. Можно читать описание и переходить в сам канал по клику.
Из того что читаю:
LEFT JOIN,
Reveal the Data,
Инжиниринг данных,
Время Валеры,
Чартомойка и другие.
Интересно получилось.
Cмотрел еще категории 'блоги' и 'спорт' . Там кривые по рейтингам другие совершенно. Про это тоже расскажу. До визуализации всей телеграм вселенной осталось немного.