Scroll to top
Tips & Tricks
2026-07-17

Разработка парсера на Laravel

Описание

Заказчик поставил задачу: создать систему, которая автоматически собирает с сайта BetExplorer полную статистику футбольных матчей (коэффициенты, результаты, даты, команды, лиги), сохраняет данные в структурированную базу данных, а затем на основе собранных данных рассчитывает вероятности исходов, эффективности ставок и формирует прогнозы по 6 критериям (включая разницу очков, проход форы и распределение Пуассона).

Главные вызовы проекта:

Сбор данных из нескольких тысяч матчей из десятков лиг и сезонов (Аргентина, Англия, Бразилия, Армения и др.).
Обработка азиатских фор (Asian Handicap) — определение равновесных и покупных линий с целыми индексами.
Расчёт сложных статистических критериев и вероятностей для каждого матча.
Экспорт результатов в Excel с автоматической стилизацией и форматированием.
Особенность: все расчёты должны выполняться для тысяч матчей без таймаутов и сбоев.

Решение

Для решения задачи я разработал многослойную архитектуру:

1. Сбор данных (парсер)
Написал парсер на Playwright (Node.js) с эмуляцией браузера для обхода динамических страниц.
Парсер умеет обрабатывать страницы турниров (/results/) и страницы матчей (#ah) для сбора азиатских фор.
Реализован механизм извлечения коэффициентов 1X2, дат, счёта, названий команд и ID матчей.

2. Хранение и структура данных

Использовал Laravel + MySQL с чёткой структурой БД: лиги, команды, матчи, азиатские форы, критерии, прогнозы.
Внедрена система дедупликации (updateOrCreate) для избежания дублей при повторных запусках.

3. Асинхронная обработка (масштабирование)

Так как объём данных достиг 6000+ матчей, синхронная обработка приводила к таймаутам (504 Gateway Time-out).
Внедрил систему очередей Laravel Jobs с драйвером database:
Отдельные задания для парсинга каждой ссылки.
Отдельные задания для сбора азиатских фор для каждого матча.
Настроил фоновый воркер (queue:work) с поддержкой повторных попыток (tries: 3) и таймаутов.
Добавил кнопку в административной панели для запуска воркера из интерфейса (без доступа к консоли).

4. Расчёты и статистика

Реализовал расчёт 6 критериев:
Разница очков общая.
Разница очков дома.
Разница очков за последние 5 матчей.
Разница очков за последние 5 матчей дома.
Процент прохода форы с учётом поля.
Критерий Пуассона (сила атаки/обороны, ожидаемые голы, вероятности исходов).
Алгоритмы вероятностей: на основе исторических данных для каждого критерия вычисляются частоты исходов, умножаются на коэффициенты → получаются эффективности.
Все расчёты также вынесены в очередь для обработки тысяч матчей без сбоев.

5. Экспорт результатов

Разработан модуль экспорта в Excel (XLSX) с автоматической стилизацией (зелёная шапка, чередование строк, границы, автоширина).
В файле выводятся: дата, лига, команды, коэффициенты, вероятности, эффективности, прогноз (победа хозяев/ничья/победа гостей), а также данные по азиатским форам (равновесные и покупные).

6. Интерфейс управления

Создана административная панель на Filament с пошаговыми блоками:
Настройка парсинга (ввод ссылок, выбор наборов URL).
Этапы: сбор данных → расчёт статистики → расчёт критериев → расчёт вероятностей → экспорт.
Сервисные кнопки для очистки таблиц.
Добавлена таблица последних добавленных матчей для контроля качества.

Результат

Система успешно обрабатывает более 6000 матчей из 20+ ссылок (10+ лиг, 3+ сезона). Основные достижения:

Стабильность. Благодаря очереди и фоновым воркерам обработка выполняется без таймаутов даже при 4000+ заданиях.

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

Точность прогнозов. Расчёты основаны на реальных исторических данных и 6 критериях, что повышает объективность.

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

Масштабируемость. Архитектура позволяет легко добавлять новые лиги, сезоны и критерии без переписывания кода.

Экспорт данных. Заказчик получает готовый Excel-файл со всеми прогнозами и азиатскими форами, который можно использовать для анализа и принятия решений.

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

Похожие статьи

Давайте создадим ваш сайт

Заполните форму ниже и расскажите о вашем проекте. Я отвечу вам в ближайшее время и предложу варианты реализации.

Name
Phone
Email
Message
Спасибо! Ваше сообщение успешно отправлено. Мы свяжемся с вами в ближайшее время.
Sorry there was an error sending your form.