Парсинг цен — это автоматический сбор стоимости товаров с сайтов конкурентов или поставщиков, чтобы сравнивать её со своей и вовремя реагировать на изменения. Разбираем, как настроить процесс, на что обратить внимание и какие ловушки встречаются чаще всего.
Зачем собирать цены
- Видеть, где ваши товары дороже или дешевле рынка.
- Автоматически обновлять цены и наличие в магазине по прайсу поставщика.
- Отслеживать акции конкурентов и динамику цен.
- Готовить аналитику по категориям и брендам.
Шаг 1. Подготовьте список товаров и источников
Составьте таблицу: артикул или название вашего товара, ссылка на этот товар у конкурента, целевые поля (цена, наличие, акционная цена). Сопоставление по артикулу или штрихкоду точнее, чем по названию.
Шаг 2. Найдите, где на странице лежит цена
Чаще всего цена есть в разметке карточки товара, но удобнее брать её из микроразметки JSON-LD (schema.org/Product): она стабильнее вёрстки и содержит валюту и наличие.
import json
import requests
from bs4 import BeautifulSoup
html = requests.get("https://example.com/product/123", timeout=20).text
soup = BeautifulSoup(html, "lxml")
for tag in soup.select('script[type="application/ld+json"]'):
data = json.loads(tag.string or "{}")
if isinstance(data, dict) and data.get("@type") == "Product":
offer = data["offers"]
print(offer["price"], offer["priceCurrency"], offer.get("availability"))
Если разметки нет, используйте CSS-селектор цены, как описано в статье парсинг на Python с BeautifulSoup.
Шаг 3. Приведите цены к единому виду
На сайтах цены записывают по-разному: «1 299 грн», «1299,00 ₴», «от 1299». Очищайте строку от пробелов и символов и преобразуйте в число:
import re
def to_price(text):
digits = re.sub(r"[^\d,.]", "", text).replace(",", ".")
return float(digits) if digits else None
Шаг 4. Храните историю
Записывайте не только текущую цену, но и дату сбора. Так вы увидите динамику, а не только снимок. Для небольших объёмов достаточно CSV или таблицы Excel, для больших — баз данных.
Шаг 5. Настройте расписание
Запускайте сбор по расписанию: на Windows через «Планировщик заданий», на Linux через cron. Для большинства магазинов хватает одного-двух раз в сутки.
Парсинг цен в Excel
Для небольшого каталога можно обойтись без программирования: встроенная функция «Данные → Из Интернета» или сторонние надстройки собирают таблицы со страниц. Для сложных сайтов, динамических цен или больших объёмов такой подход не подходит.
Ловушки, о которых нужно помнить
- Динамические цены. Если цена подгружается скриптом, см. парсинг динамических страниц.
- Разные цены для регионов и групп клиентов. Зафиксируйте регион и тип аккаунта, с которым собираете данные.
- Скидки и акции. Собирайте и обычную, и акционную цену отдельно.
- Защита от ботов. Не нагружайте сайт, делайте паузы и соблюдайте его правила.
Готовые решения в нашем каталоге: Парсинг цен и наличия товаров.
Не хотите настраивать самостоятельно? Мы выполним парсинг сайтов для сбора цен или разработаем парсер на заказ с регулярным обновлением.