Найти в Дзене
Qorred

Пишем телеграм бота-парсера на Python, с помощью библиотек requests, BeautifulSoup и aiogram

Используется библиотека requests для получения HTML-кода страницы.
С помощью библиотеки BeautifulSoup извлекаются необходимые данные из HTML-кода.
С помощью регулярных выражений и извлеченных данных формируется текстовый результат.
Полученный результат выводится в телеграм боте.
Парсер получает новости о спорте с сайта.
Парсер извлекает информацию о виде спорта, времени, счете и командах, участвующих в матче.
Результат выводится
в телеграм боте. в виде текстовой информации.

Первым делом импортируем библиотеки, далее получаем html-код страницы по заданному URL

Юзер агент нужен, чтобы сервер не  принял наш парсер за бота
Юзер агент нужен, чтобы сервер не принял наш парсер за бота

Создаем функцию 'extract_data', которая будет извлекать данные из HTML-кода новостей и возвращает список строк с результатами

Данные sport, time, score берем с кода страницы (открываем сайт, нажимаем просмотреть код). Чтобы получить название команд я использовал регулярные выражения. 
sport = soup.find(class_='p-sport-event__rubric link-holder_over').text - парсим названия (футбол, хоккей и тд.). .text - возвращает только текст, без html кода.      
time = soup.find(class_='p-sport-event__info').text  - парсим время начала/окончания матча 
score = soup.find(class_='p-sport-event__scores').text - парсим счет
Данные sport, time, score берем с кода страницы (открываем сайт, нажимаем просмотреть код). Чтобы получить название команд я использовал регулярные выражения. sport = soup.find(class_='p-sport-event__rubric link-holder_over').text - парсим названия (футбол, хоккей и тд.). .text - возвращает только текст, без html кода. time = soup.find(class_='p-sport-event__info').text - парсим время начала/окончания матча score = soup.find(class_='p-sport-event__scores').text - парсим счет

Выглядит это примерно так:

-3

Следующая функция 'main' - основная функция программы, которая вызывает остальные функции и возвращает результат

Парсер готов, теперь нам нужно отправить данные в ТГ бот.
Парсер готов, теперь нам нужно отправить данные в ТГ бот.

Для того чтобы отправить результат в ТГ бот, мы напишем два хендлера

Ничего необычного, start - выводит сообщение, match_schedule - вызывает функцию 'main'
Ничего необычного, start - выводит сообщение, match_schedule - вызывает функцию 'main'

Пишем loader который запустит наш бот.

Все как обычно, импорт библиотек, логирование, инициализация бота, запуск бота.
Все как обычно, импорт библиотек, логирование, инициализация бота, запуск бота.

Структура бота выглядит так:

-7

Конечный результат выглядит так:

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

-9