Парсер на Python · работает в браузере
Мониторинг цен конкурентов
Конкурент снизил цену на ходовой роутер — а вы узнаёте об этом через неделю по упавшим продажам. Здесь парсер на Python обходит сайты трёх конкурентов «Вольта» за месяц, день за днём: находит те же товары под другими названиями, замечает снижения и распродажи, переживает редизайн чужого сайта и предлагает новую цену, не опускаясь ниже минимальной наценки. Код — тот же, что работает у клиента на сервере, только запущен в вашем браузере.
Сценарий: «Вольт» — вымышленный магазин электроники: 15 товаров — роутеры, наушники, умный дом и зарядки. Конкуренты «Ампер», «Фаза» и «Ток» тоже вымышлены, их сайты — статические страницы на 30 дней.

Открыть демо
Python запускается в браузере за несколько секунд: в первый раз скачивается около 6,5 МБ, ещё 8 МБ для Excel-отчёта — в фоне. Удобнее с компьютера: таблица цен и график шире.
Приложение работает в браузере: на сервер ничего не отправляется.
Что показывает демо
Как попробовать
Посмотрите первый обход
Приложение само обходит сайты за первый день. Вкладка «Журнал обхода» — какие страницы и в каком порядке запросил парсер, а ссылка «Открыть сайт» покажет сам сайт конкурента.
Перейдите к шестому дню
В блоке «Что попробовать» — «Ампер снижает цену роутера AX3000 на 12 %». Придёт уведомление, а рекомендация предложит 5 590 ₽ — нажмите «Поставить».
Переживите редизайн
День 12: «Ампер» меняет вёрстку. В журнале — предупреждение, но цены всё равно собраны из микроразметки.
Ценовая война и отчёт
День 18: «Ампер» и «Ток» демпингуют на наушниках — рекомендация упирается в минимальную наценку. Поменяйте её во вкладке «Правила» и скачайте Excel.
Без платных нейросетей
Сайты конкурентов вымышлены и лежат на этом же сервере, по версии на каждый из 30 дней, а парсер обходит их по-настоящему: Python 3.14 в WebAssembly-сборке Pyodide, BeautifulSoup, pandas и openpyxl. Товары сопоставляются правилами, без нейросети. Тот же пакет проверяется тестами pytest на обычном Python и запускается на сервере одной командой.
Демо работает без API-ключей OpenAI, YandexGPT или GigaChat. Там, где рабочая система обращается к модели, стоит локальная заглушка с тем же интерфейсом — поэтому демо бесплатно, всегда доступно и ничего не выдумывает.
Что будет в рабочем проекте
- Обход по расписанию на сервере, ротация прокси и повторы, браузер Playwright для сайтов, которые без него не отдают цены
- Каталог и цены из 1С или МойСклад, новые цены — обратно в магазин после одобрения менеджера
- Уведомления в Telegram с кнопками: принять цену, отклонить, открыть товар у конкурента
- Маркетплейсы: Wildberries, Ozon и Яндекс Маркет через их API
- История в PostgreSQL, дашборд и еженедельный отчёт в Excel на почту
Стек
- Все демо по стеку:
- Python
- React
- TypeScript
- Python 3.14
- BeautifulSoup
- pandas
- openpyxl
- pytest
- Pyodide
- WebAssembly
- Web Worker
- Comlink
- React 19
- TypeScript
- Recharts
- Zustand
Основано на
Книги и дисциплины, идеи из которых работают в этом демо.
Книга · Д. М. Кольцов
Python на примерах. Практика, практика и только практика
Парсер цен на Python с тестами pytest, работает прямо в браузере через Pyodide: три сайта — три парсера.
Книга · Алексей Васильев
Программирование на Python в примерах и задачах
Парсер обходит сайты трёх конкурентов параллельно через asyncio.
Дисциплина · ВМК МГУ
Разработка на Python
Парсер цен на Python с тестами pytest, pandas и выгрузкой в Excel.
Комментарий от разработчика
Антон Гончаров
Разработчик ИИ-систем · Python
Для бизнеса
- Снижение цены у конкурента видно в тот же день, а не через неделю по упавшим продажам.
- Рекомендация цены учитывает минимальную наценку — в ценовой войне не уйдёте в минус.
- Отчёт в Excel — для тех, кто привык работать в таблицах.
Для разработчиков
- Парсер на Python (BeautifulSoup, pandas) работает в браузере в Pyodide; тот же пакет проходит pytest на обычном Python и запускается на сервере.
- Три сайта — три подхода: HTML с пагинацией, sitemap с JSON-LD и SPA, у которой парсер находит JSON API. После редизайна он переходит на микроразметку.
- Сопоставление с каталогом — по штрихкоду, модели и характеристикам с объяснением; сомнительные пары уходят на подтверждение человеку.
Советы
Совет 01
Ищите у сайта JSON API и микроразметку раньше, чем пишете CSS-селекторы: они переживают редизайн.
Совет 02
Парсер должен громко падать, когда страница изменилась, а не молча возвращать пустые цены.
Нужен такой же для вашего бизнеса?
Расскажите о задаче — отвечу, что из демо подойдёт вам, сколько это займёт и что понадобится с вашей стороны.
Другие демо в этом разделе
Все демо- работает
Веб-приложение · OCR · проверка реквизитов
Распознавание документов
Загрузите счёт или акт — фото, скан или PDF. Приложение распознаёт текст, вытаскивает реквизиты и строки таблицы и проверяет их: контрольные суммы ИНН и счетов, итог и НДС.
- React
- TypeScript
- Нейросеть в браузере
- работает
Веб-приложение · диалоги · сделки · аналитика
Панель оператора
Рабочее место оператора, которому бот передаёт сложные обращения: очередь с таймером, резюме диалога, черновик ответа, сделки на канбане и аналитика — на живом потоке клиентов.
- React
- TypeScript
- работает
Веб-приложение · Recharts · RBAC · аудит
SaaS-дашборд
Кабинет команды выручки SaaS: MRR по тарифам, движение выручки, отток, здоровье клиентов, выгрузка CSV для Excel и журнал действий. Все цифры считаются из одной истории за год — смена тарифа в карточке клиента сразу двигает MRR на графиках.
- React
- TypeScript
- работает
Веб-приложение · Laravel · PostgreSQL
Складской контур на Laravel
Учёт склада, где остаток — сумма проводок, а не «поле qty--»: заказы с резервом «всё или ничего», сборка по ячейкам, приёмка с импортом CSV, инвентаризация и журнал. Гонка двух настоящих процессов PHP в PostgreSQL показывает, зачем нужна блокировка строки.
- PHP
- работает
Веб-приложение · метрики · оповещения
Мониторинг бота
Как следят за ботом, когда он уже работает с клиентами: сколько запросов, как быстро он отвечает, как часто ошибается или не знает ответа. Журнал запросов с трассой каждого ответа и правила, которые пишут дежурному в Telegram, если что-то пошло не так.
- React
- TypeScript
- работает
Веб-приложение · PWA · нативный JS
Офлайн-приложение курьера
Рабочий день курьера: заказы, звонок клиенту, вручение с фото и подписью. Приложение открывается и работает без сети, а изменения уходят в диспетчерскую, когда связь вернётся. Если диспетчер за это время изменил тот же заказ — курьер выбирает, чья версия верная.
- Нативный JS
