Как спарсить Telegram

Telegram — платформа, где есть медиа, общение, реклама и деньги. Здесь много интересного и полезного. Павел Дуров и команда действительно сделали очень крутой продукт. Это в самом деле очень большая платформа с полным отсутствием поиска как такового. Да, этот так. Что-то попадает в Гугл, что-то в другие поисковики, каталоги, но не более. Местный поиск в Telegram за более-менее полноценный поиск считать трудно. А давайте попробуем стать гуглояндексом и спарсить Telegram. Чего нам стоит? А заодно немного расскажу о том, что такое парсинг и как он работает. Постараюсь сильно упростить и не залезать в дебри. Итак, начнём.

Как спарсить Телеграм
Парсер Telegram

Как работает парсинг сайтов

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

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

Например, парсеры скачивают изображения из интернет — магазинов, описания товаров, контакты. «Пауки» или боты поисковых систем разбирают страницы сайтов чтобы понять, что находится на них. Рекламные сети имеют своих ботов. Реклама не будет показываться на страницах, на которых присутствуют слова, которые рекламная сеть не хочет видеть рядом с размещаемой рекламой. Подробнее об этом писал в посте Как проверить на стоп-слова текст сайта. В общем, так или иначе, многие знакомые нам механизмы собирают и анализируют информацию.

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

Вот так выглядит мой сайт для вас.

А вот как выглядит сайт или код сайта для парсеров. Есть, как говорится, разница. Это фронтэнд — лицо сайта. Есть ещё бекэнд — внутренний механизм сайта. Для парсера он не важен, как правило, и программа использует только тот код разметки html, которые отображает сайт для пользователя: ссылки, заголовки, текст, цены, картинки и т.п.

Задача простого парсера — загрузить страницу, оптимизировать (например, убрать пробелы) и с помощью алгоритмов разбора выделить необходимые данные. Далее эти данные помещаются в табличку или базу данных для дальнейшего анализа или использования.

Сейчас читают:  Как бесплатно воспроизводить видео высокого качества HEVC

Пример разбора страницы парсером

Посмотрим как парсер разбирает страницу. Пусть парсер собирает заголовки новостей в виде текста и складывает их в таблицу.

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

Алгоритм работы парсера

Дальше будет алгоритм прямого разбора. Есть ещё так называемые регулярные выражения — команды, доступность которых обеспечивается библиотеками в том или ином языке программирования. Так называемые «регулярки» очень удобны, хотя поначалу кажутся китайской грамотой. Но продолжим.

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

Затем парсер находит ключевую информацию, которая определена в его настройках. Это могут быть html теги заголовков определённого уровня типа <h4> и </h4>, целый блок <h4>Новости</h4> или что-то довольно уникальное. В противном случае нужно будет указать сколько таких повторяющихся блоков пропустить при парсинге (также возможно пропустить несколько символов). Например, парсер находит 5 блоков <h5> и </h5> и начиная с 6 копирует данные между тегами.

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

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

Парсинг Telegram

Автоматические большие парсеры могут находить сайты по ключевым словам, тематикам, расположению аудитории (гео) и т.п. Данные сайта: URL, название и другие заносятся в базу для парсинга. После того, как базу отфильтровали и почистили от мусора в ручном, автоматическом или полуавтоматическом режиме парсер может начать методично обходить сайты собирая данные. Для того, чтобы сайты не банили парсеры применяются различные способы: смена User-агента, ip-адресов, используются proxy-серверы и VPN, вводится рандомный тайм-аут на обращение к сайту и т.д.

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

В нашем примере мы возьмем однопотоковый парсер, который будет перебирать адреса каналов Telegram.

Но для начала адреса нужно где-то найти или сгенерировать. Мы помним, что название каналов Telegram может состоять из цифр и символов латинского алфавита. Всего получилось 10+26=36 символов.

Сейчас читают:  Какой компьютер сейчас выбрать для дома

0123456789abcdefghijklmnopqrstuvwxyz

Насколько помню, имена должны быть не менее 5 символов. Давайте соберем последовательность.

Я использовал такой генератор слов. В примере я сгенерировал 1000 названий каналов начиная с aaaaa.

Далее я беру и загружаю эти данные в парсер. К доменному имени https://t.me/ будет по очереди добавляться сгенерированное на предыдущем этапе имя канала.

Ниже виден парсер Telegram в работе. Загружается исходный код, анализируется и собранные данные сохраняются в строки.

Дальше дело техники. Открываем Excel и экспортируем туда наши данные. Про экспорт подробно писал в посте Как получить курсы валют из интернета в Excel или Таблицы Гугл. Видно, что арабский парсер не понял.

В итоге получилось такая таблица отсортированная по количеству подписчиков. Парсер работает, данные первой 1000 каналов собраны.

Теперь проверим как всё совпало. Да, вот канал, точное количество подписчиков и остальные данные присутствуют. Все получилось.

Но в завершении поста прочтите самое важное ниже. О математике в парсинге.

Немного грустной математики

В именах каналов используются символы латинского алфавита и цифры и имя не короче 5 символов. То есть такой список будет расти экспоненциально как количество используемое символов (36) возведённое в степень равную длине слова. Для имён каналов из 5 символов это будет 36^5 вариантов. А для имён каналов из 5 и 6 знаков это будет уже сумма степеней 36^5+36^6 и так далее:

Число символовСтепеньКол-во вариантов
36560 466 176
3662 176 782 336
36778 364 164 096
3682 821 109 907 456
369101 559 956 668 416
36103 656 158 440 062 980
3611131 621 703 842 267 000
36124 738 381 338 321 620 000
3613170 581 728 179 578 000 000
36146 140 942 214 464 820 000 000
3615221 073 919 720 733 000 000 000

Для перебора всех имен каналов всего из 8 букв нам понадобится проверить почти 3 триллиона каналов.

А для имени канала в 10 символов потребуется перебрать:

227 390 317 427 040 000 000 000 вариантов

Но огромное количество каналов имеют имена более 10, 15 символов. Даже на генерацию имен уйдет уйма времени. Ведь данные надо либо генерировать на ходу, либо сохранить в огромную базу. Парсинг потребует огромного количества ресурсов в том числе и временных. А это даже не годы, а значительно больше.

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

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

Читайте нас в Telegram или Facebook

Поделиться в сетях:



Войдите (зарегистрируйтесь) с помощью вашего аккаунта: 
5 прокомментировали
Встроенные отзывы
Посмотреть все комментарии