Написати в Телеграм Написати у Вайбер Зателефонувати

Парсинг цін — це автоматичний збір вартості товарів із сайтів конкурентів або постачальників, щоб порівнювати її зі своєю і вчасно реагувати на зміни. Розбираємо, як налаштувати процес, на що звернути увагу й які пастки трапляються найчастіше.

Навіщо збирати ціни

  • Бачити, де ваші товари дорожчі чи дешевші за ринок.
  • Автоматично оновлювати ціни та наявність у магазині за прайсом постачальника.
  • Відстежувати акції конкурентів і динаміку цін.
  • Готувати аналітику по категоріях і брендах.

Крок 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

Для невеликого каталогу можна обійтися без програмування: вбудована функція «Дані → З Інтернету» або сторонні надбудови збирають таблиці зі сторінок. Для складних сайтів, динамічних цін чи великих обсягів такий підхід не підходить.

Пастки, про які слід пам’ятати

  • Динамічні ціни. Якщо ціна підвантажується скриптом, див. парсинг динамічних сторінок.
  • Різні ціни для регіонів і груп клієнтів. Зафіксуйте регіон та тип акаунта, з яким збираєте дані.
  • Знижки й акції. Збирайте і звичайну, і акційну ціну окремо.
  • Захист від ботів. Не навантажуйте сайт, робіть паузи й дотримуйтесь його правил.

Готові рішення в нашому каталозі: Парсинг цін та наявності товарів.

Не хочете налаштовувати самостійно? Ми виконаємо парсинг сайтів для збору цін або розробимо парсер на замовлення з регулярним оновленням.