Необходимость спарсить каталог ламп — цены, мощность, цоколь, цветовую температуру — обычно возникает у продавцов, которые мониторят конкурентов на маркетплейсах, и у закупщиков, собирающих прайсы поставщиков в единую таблицу. Задача выглядит простой только до первого запуска: карточки товаров категории «лампы и светильники» содержат десятки атрибутов, а площадки активно защищаются от автоматического сбора.
В этой статье разберём, какие инструменты подходят для парсинга товарных данных по освещению, как структурировать выгрузку и какие ограничения нужно учитывать, чтобы не получить бан по IP или искажённые данные.
Что именно парсят в категории «лампы»
Под «парсером для ламп» чаще всего понимают скрипт или сервис, который собирает данные из карточек товаров: светодиодные лампы, люминесцентные, галогенные, ленты и комплектующие. Набор полей зависит от цели.
Типовой набор данных для мониторинга цен и аналитики ассортимента:
- 💡 Название и артикул — для сопоставления одинаковых товаров у разных продавцов.
- 💰 Цена и цена со скидкой — основа конкурентного мониторинга.
- 🔌 Характеристики: мощность, цоколь (E27, E14, GU10), световой поток, цветовая температура.
- 📦 Наличие и остатки — если площадка их отображает.
- ⭐ Рейтинг и число отзывов — косвенный показатель спроса.
Отдельный сценарий — парсинг прайсов поставщиков в форматах CSV, XLSX или YML. Здесь задача проще технически, но сложнее в нормализации: один и тот же параметр «цветовая температура» у разных поставщиков может называться по-разному и указываться в разных форматах.
Инструменты: от готовых сервисов до собственных скриптов
Выбор инструмента зависит от объёма, частоты сбора и технических навыков. Универсального решения нет — у каждого подхода есть границы применимости.
| Подход | Кому подходит | Ограничения |
|---|---|---|
| Облачные парсеры (no-code сервисы) | Маркетологам без опыта программирования | Лимиты тарифов, шаблонная логика, сложно с динамическими страницами |
| Десктопные программы-парсеры | Разовые выгрузки среднего объёма | Ручная настройка селекторов, ломается при смене вёрстки |
| Скрипты на Python (requests, BeautifulSoup, Scrapy) | Регулярный сбор, кастомная логика | Нужны навыки разработки и поддержка кода |
| Браузерная автоматизация (Playwright, Selenium) | Сайты с рендерингом через JavaScript | Медленнее, заметнее для антибот-систем |
| Официальные API маркетплейсов | Продавцы, работающие со своими кабинетами | Доступ только к своим данным или ограниченной аналитике |
Если задача — разово выгрузить пару тысяч карточек ламп для анализа ниши, разумнее взять готовый сервис. Если нужен ежедневный мониторинг цен конкурентов с записью в базу — без собственного скрипта или разработчика не обойтись.
Как устроен парсинг карточек товаров
Базовый цикл любого парсера одинаков: получить список URL карточек, загрузить каждую страницу, извлечь нужные поля, сохранить результат. Сложности начинаются на деталях.
Многие площадки подгружают цены и характеристики через JavaScript после загрузки страницы. В этом случае простой запрос через requests вернёт пустой каркас, и придётся либо искать внутренний API, к которому обращается фронтенд, либо рендерить страницу через headless-браузер. Поиск внутренних запросов делается через вкладку Network в инструментах разработчика браузера — часто там обнаруживается JSON-эндпоинт с готовыми структурированными данными.
import requests
from bs4 import BeautifulSoup
url = "https://example-shop.ru/catalog/lampy-led/"
resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(resp.text, "html.parser")
for card in soup.select(".product-card"):
title = card.select_one(".product-card__title")
price = card.select_one(".product-card__price")
print(title.text.strip() if title else "-",
price.text.strip() if price else "-")
Это упрощённый пример для статической страницы. Названия CSS-классов у каждого сайта свои — их нужно смотреть в исходном коде конкретной площадки, и они могут меняться при обновлении вёрстки.
Перед написанием парсера откройте исходный HTML страницы (Ctrl+U) и поищите в нём цену товара. Если её там нет — данные подгружаются скриптами, и простого requests будет недостаточно.
Нормализация характеристик ламп
Главная специфика категории — хаос в атрибутах. Одна и та же лампа у разных продавцов описывается по-разному: мощность то в ваттах, то в «эквиваленте накаливания», цветовая температура то числом в кельвинах, то словами «тёплый белый».
Чтобы выгрузка была пригодна для анализа, заложите этап нормализации:
- 🧹 Приведение единиц измерения к одному виду (например, «4000 К», «4000K» и «4000 кельвин» — к числу
4000). - 🔗 Сопоставление дублей по комбинации бренд + артикул + ключевые характеристики.
- 🗂 Отдельные колонки для структурированных полей: цоколь, форма колбы, диммируемость.
- 🕒 Фиксация даты и времени сбора — цены на маркетплейсах меняются часто.
⚠️ Внимание: не полагайтесь на название товара как источник характеристик. Продавцы нередко пишут в заголовке «лампа 100W», имея в виду эквивалент лампы накаливания, а реальная потребляемая мощность светодиодной лампы значительно ниже. Берите данные из блока характеристик, а не из заголовка.
Ценность парсинга определяется не объёмом собранных строк, а качеством нормализации: сырые данные без приведения единиц и дедупликации почти бесполезны для аналитики.
Блокировки и как с ними работать
Маркетплейсы и крупные магазины отслеживают автоматический трафик. Признаки того, что парсер «спалился»: страницы с капчей, пустые ответы, HTTP-ошибки 403 или 429, редиректы на страницу проверки.
Снизить вероятность блокировки помогают базовые меры: паузы между запросами со случайным интервалом, ротация User-Agent, использование прокси при больших объёмах, ограничение скорости сбора до разумной. Агрессивный параллельный обход в сотни потоков почти гарантированно приведёт к бану подсети.
⚠️ Внимание: перед массовым сбором проверьте файл robots.txt площадки и её пользовательское соглашение. Ряд площадок прямо запрещает автоматический сбор данных, и нарушение может привести не только к блокировке IP, но и к претензиям со стороны владельца площадки. Используйте полученные данные в рамках законодательства вашей юрисдикции.
Что делать, если площадка отдаёт капчу даже при умеренной скорости
Возможные варианты: снизить частоту запросов ещё сильнее и добавить случайные паузы; сменить пул прокси на резидентные; проверить, нет ли у площадки официального API или готовой выгрузки для партнёров; рассмотреть сбор в несколько сессий с большими перерывами. Гарантированного способа обхода не существует — антибот-системы постоянно обновляются.
Пошаговый запуск первого парсера
Порядок действий для старта без лишних потерь времени:
- Определите точный список полей, которые нужны на выходе, и формат результата (
CSV,Google Sheets, база данных). - Вручную изучите 3–5 карточек товаров: где лежат характеристики, как устроена пагинация каталога, подгружаются ли данные скриптами.
- Соберите список URL категорий (например, «лампы E27», «лампы GU10», «филаментные»).
- Напишите или настройте парсер на одной странице, проверьте корректность извлечения каждого поля.
- Запустите сбор на малом объёме (одна категория), проверьте выгрузку на пропуски и дубли.
- Только после этого масштабируйте на весь каталог с контролем скорости.
☑️ Проверка выгрузки перед использованием
Типичные ошибки при парсинге товаров освещения
Чаще всего проблемы возникают не на этапе сбора, а на этапе интерпретации. Парсер исправно выгружает данные, но выводы по ним оказываются неверными.
Типичные промахи: сравнение цен без учёта того, что у одного продавца в карточке одна лампа, а у другого — комплект из четырёх; смешение в одной выборке ламп разного цоколя; игнорирование того, что часть цен — это акционные цены с ограниченным сроком. Ещё одна частая ошибка — отсутствие истории: разовая выгрузка показывает снимок, но не динамику, поэтому для мониторинга цен данные нужно накапливать по расписанию.
⚠️ Внимание: автоматическое сопоставление товаров только по названию даёт высокий процент ложных совпадений. Названия карточек ламп у разных продавцов почти никогда не совпадают дословно — используйте связку бренд + артикул производителя, а если артикула нет, комбинацию ключевых характеристик.
Начинайте с малого: одна категория, ручная сверка, затем масштабирование. Это дешевле, чем переделывать полный сбор после обнаружения системной ошибки в извлечении полей.
FAQ: частые вопросы
Можно ли парсить маркетплейсы без программирования?
Да, существуют no-code сервисы и десктопные программы с визуальной настройкой: вы выделяете нужные элементы на странице мышью, а инструмент собирает их по шаблону. Ограничение — такие решения хуже справляются с динамической подгрузкой и требуют перенастройки при смене вёрстки сайта.
Как часто нужно обновлять данные о ценах?
Зависит от цели. Для мониторинга конкурентов в активной нише обычно собирают данные ежедневно или несколько раз в день. Для анализа ассортимента достаточно еженедельного сбора. Учитывайте, что слишком частые запросы повышают риск блокировки.
Почему парсер собрал меньше товаров, чем показано в категории?
Возможных причин несколько: часть карточек подгружается при прокрутке (бесконечный скролл), пагинация обрабатывается некорректно, часть запросов была отклонена антибот-системой, либо фильтры категории скрывают товары не в наличии. Проверяйте каждый вариант по отдельности на малом объёме.
Что делать, если сайт изменил вёрстку и парсер перестал работать?
Это штатная ситуация. Нужно заново проинспектировать страницу, обновить CSS-селекторы или XPath в коде и прогнать тестовый сбор. Чтобы снизить затраты на поддержку, выносите селекторы в конфигурацию, а не зашивайте в логику скрипта, и добавьте автоматическую проверку: если ключевое поле не найдено, парсер должен сообщить об этом, а не молча записать пустоту.
Легален ли парсинг открытых данных о товарах?
Однозначного ответа нет — это зависит от юрисдикции, условий использования конкретной площадки и способа применения данных. Общедоступность информации не означает автоматического права на её массовый сбор. Перед коммерческим использованием выгрузок изучите пользовательское соглашение площадки и при необходимости проконсультируйтесь с юристом.