Парсинг цін — це автоматичний збір вартості товарів із сайтів конкурентів або постачальників, щоб порівнювати її зі своєю і вчасно реагувати на зміни. Розбираємо, як налаштувати процес, на що звернути увагу й які пастки трапляються найчастіше.
Навіщо збирати ціни
- Бачити, де ваші товари дорожчі чи дешевші за ринок.
- Автоматично оновлювати ціни та наявність у магазині за прайсом постачальника.
- Відстежувати акції конкурентів і динаміку цін.
- Готувати аналітику по категоріях і брендах.
Крок 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
Для невеликого каталогу можна обійтися без програмування: вбудована функція «Дані → З Інтернету» або сторонні надбудови збирають таблиці зі сторінок. Для складних сайтів, динамічних цін чи великих обсягів такий підхід не підходить.
Пастки, про які слід пам’ятати
- Динамічні ціни. Якщо ціна підвантажується скриптом, див. парсинг динамічних сторінок.
- Різні ціни для регіонів і груп клієнтів. Зафіксуйте регіон та тип акаунта, з яким збираєте дані.
- Знижки й акції. Збирайте і звичайну, і акційну ціну окремо.
- Захист від ботів. Не навантажуйте сайт, робіть паузи й дотримуйтесь його правил.
Готові рішення в нашому каталозі: Парсинг цін та наявності товарів.
Не хочете налаштовувати самостійно? Ми виконаємо парсинг сайтів для збору цін або розробимо парсер на замовлення з регулярним оновленням.