Руководство по парсингу цен для ценового сравнения в 2026 году
В прошлом году мне позвонил парень, продающий чехлы для телефонов на Amazon, убеждённый, что кто-то внутри его компании сливает цены конкурентам. Конкурент подстраивался в течение нескольких часов после каждого изменения — всегда на доллар дешевле. Я сказал ему, что никто ничего не сливает: конкурент почти наверняка использует скрапер цен.
Он помолчал секунду, а потом задал два вопроса подряд: «это законно?» и «ты можешь сделать то же самое с ними?». Я ответил «скорее всего» и «да». Именно этот звонок привёл меня в эту область — и эта история поможет мне объяснить всё в статье, потому что каждая концепция парсинга цен понятнее через реальный проект.

Что такое парсинг цен?
Клиент с чехлами тратил примерно два часа каждое утро, проверяя цены конкурентов. Открывал каждый листинг на Amazon, вписывал цену в Google Таблицу, сравнивал со своей, решал, корректировать ли. Каждое утро. К тому моменту, как он заканчивал все 200 товаров, некоторые цены, проверенные первыми, уже снова менялись — в его категории цены на Amazon меняются быстро. Он делал это вручную и каждый день проигрывал.
Что такое парсинг цен? Это то, что заменило двухчасовую утреннюю рутину. В субботу я позвонил другу Дереку и объяснил, что нужно. Он сказал «о, скрапер» — как будто это само собой разумелось. За выходные мы написали скрипт — около 30 строк на Python — который заходит на страницу товара каждого конкурента, находит цену и сохраняет её.
Вместо того чтобы мой клиент открывал 200 вкладок и щурился на цифры, скрипт делал это за четыре минуты. Индустрия называет это «ценовой разведкой» — Дерек говорит, что звучит как программа ЦРУ. Он не ошибается. По сути это просто автоматизированная проверка цен конкурентов.
Как работает парсинг цен?
Дерек пришёл с ноутбуком и упаковкой Topo Chico, и я в основном наблюдал за его работой. Он просил у меня URL, вставлял в скрипт, запускал — и в терминале появлялось число. «Это цена», — говорил он. Проделал это несколько раз, чтобы показать, что работает, потом вставил около 200 URL из таблицы и запустил всё разом.
Потом минут двадцать настраивал ещё две вещи, о которых я никогда не слышал: одну для хранения данных, другую для автоматического запуска каждые шесть часов. PostgreSQL для хранения — запомнил, потому что название абсурдное. Второе он описал как «будильник для кода» — это запомнилось лучше, чем настоящее название.
В понедельник утром я открыл базу данных — там были цены конкурентов за все выходные по всем 200 товарам. Парень с чехлами прислал в ответ семь восклицательных знаков — без слов.
Тогда я понял, что парсинг цен для товаров станет настоящим бизнесом, а не просто проектом выходного дня. Вот примерно как выглядел скрипт Дерека — люди постоянно просят код, и он смущает своей краткостью:
import requests
from bs4 import BeautifulSoup
url = "https://www.example.com/product-page"
page = requests.get(url)
soup = BeautifulSoup(page.text, "html.parser")
price = soup.find("span", class_="price").text
print(price) # $17.99
Вот и всё. Вся концепция в этом. Найти страницу, найти элемент с ценой, взять текст. Дерек добавил цикл по списку URL и сохранение каждой цены в PostgreSQL с временной меткой — но основная логика это те четыре строки.
Помню, смотрел на экран в ту субботу и думал, что потерял год карьеры, не зная, что это существует. Скрипт прекрасно работал десять дней. На одиннадцатый я проверил — с трёх ночи он завис на CAPTCHA от Amazon.
Просто сидел и смотрел на сетку картинок со светофорами, ожидая, пока кто-нибудь кликнет. Кликать было некому. У скрапера цен нет рук.

Сценарии использования парсинга цен в e-commerce
Парень с чехлами был моим первым клиентом, и его сценарий — самый распространённый из тех, что я встречаю: отслеживание цен конкурентов на Amazon, чтобы быстрее подстраиваться или предлагать дешевле. Теперь он получает уведомление в Slack, когда конкурент снижает цену более чем на десять процентов, и корректирует свои цены за обедом. В прошлом месяце рассказал, что это сэкономило ему порядка восьми тысяч долларов продаж, которые он потерял бы, замечая снижения цен на день позже.
Бренд средств по уходу за кожей был моим вторым клиентом. 16 конкурирующих магазинов на Shopify, около 640 ценовых точек ежедневно. Их директор по маркетингу Лаура хотела знать, когда конкуренты меняют стратегию. Скрапер засёк, как один конкурент за ночь снизил весь каталог на 15%.
Лаура позвонила мне, звуча взволнованно — для Лауры это необычно. Спросила, стоит ли подстраиваться. Я сказал подождать. Через неделю конкурент всё отменил. Без скрапера Лаура сказала бы, что они паникой скопировали стратегию снижения, которая продержалась ровно семь дней.
Туристическое агентство, которое я взял после бренда по уходу за кожей, использует ту же инфраструктуру для сравнения цен на трёх платформах бронирования. 300 авиамаршрутов, проверяемых каждые двенадцать часов.
Разные страницы товаров, одна и та же техническая схема. Парсинг цен в e-commerce, парсинг цен на авиабилеты — базовая инженерия идентична, как только решаешь проблему блокировок. Что и подводит меня к стенам, в которые я упёрся.
Сложности парсинга цен
За три месяца я упёрся в четыре стены, и каждая почти заставляла меня сдаться. Стена первая: CAPTCHA. Amazon бросает их примерно после 150–200 запросов с одного IP. Мой скрапер завис на одиннадцатый день и просидел на сетке светофоров шесть часов, пока я не заметил. Позвонил Дереку. Он засмеялся — это было не то, чего я хотел, — и сказал, что нужны разные IP. Я сказал, что у меня только один. Он сказал, что в этом и проблема.
Стена вторая: я купил датацентровые прокси. Работали три дня, потом Walmart заблокировал IP полностью. Не CAPTCHA — заблокировал. 403 на каждый запрос. Купил другой. Пять дней. Третий — четыре дня. Дерек спросил, сколько я планирую сжечь. Хорошего ответа не нашлось.
Над третьей стеной я провозился дольше всего. Половина магазинов Shopify, которые я парсил для бренда по уходу за кожей, возвращала пустые цены. Три дня провёл в уверенности, что это баг. Позвонил Дереку в субботу.
Он открыл пустую страницу, кликнул «Просмотр источника», прокрутил тридцать секунд и сказал: «эти цены добавляет JavaScript после открытия страницы, ты фотографируешь доску до того, как кто-то что-то написал». Сказал использовать Puppeteer. Я спросил, что это. Он сказал: «Chrome с пультом управления, дай ноутбук» — и сам настроил за десять минут.
Четвёртая стена оказалась самой коварной. Всё остальное работало, а Amazon продолжал случайно блокировать меня раз-два в неделю. Дерек открыл сайт BrowserLeaks на моём ноутбуке и показал: у всех моих сессий парсинга одинаковый canvas-фингерпринт. Разные IP, одинаковая идентичность браузера. Он сказал: «Amazon видит, что это одна и та же машина», я ответил: «почему ты не сказал мне об этом два месяца назад», он сказал: «думал, ты знаешь».
Зачем прокси нужны для парсинга цен
Каждая стена, в которую я упирался, имела одну корневую причину: сайт понимал, что слишком много запросов идёт из одного источника. Решение Дерека для первой и второй стены — резидентские прокси от Floppydata.
Я спросил, в чём разница с датацентровыми, которые сжигал пачками. Он пустился в объяснения, которые я в основном пропустил мимо ушей, но суть такова: Amazon ведёт список IP от хостинговых компаний и блокирует их сразу, тогда как IP от обычных домашних интернет-соединений выглядят как обычный покупатель.
Я зарегистрировался в Floppydata, подключил IP к скраперу — и CAPTCHA, которая три часа висела на экране, просто исчезла. Страница загрузилась. Я секунду смотрел на неё, потому что искренне ожидал следующей CAPTCHA за первой. Её не было.
Добавить прокси в скрипт — всего пара строк. Дерек написал после того, как я попросил записать, зная, что забуду:
proxies = {
"http": "http://user:[email protected]:8080",
"https": "http://user:[email protected]:8080"
}
page = requests.get(url, proxies=proxies)
Тот же скрипт, только с аргументом proxies в запросе. URL проходит через сервер Floppydata вместо моего домашнего вайфай, и Amazon видит резидентский IP откуда-то там, куда Floppydata его маршрутизирует, а не мой домашний адрес в Остине, который уже был в чёрном списке.
Дерек сказал, что важно ротировать их, а не использовать один для каждого запроса, — так у меня появился список из примерно двадцати IP, и скрипт выбирает случайный для каждой страницы товара. CAPTCHA полностью прекратились.
Для проблемы с фингерпринтом — стена четыре — Дерек шесть месяцев пользовался 1Browser, не говоря мне об этом, что меня до сих пор раздражает. Он создал три профиля браузера на моём ноутбуке, подключил к каждому разный IP Floppydata, снова открыл BrowserLeaks.
Три разных хеша с одной машины. Подключил их к моим скриптам Puppeteer через инструмент автоматизации и сказал запустить скрапер Amazon на ночь. Никаких блокировок. Следующее утро — никаких блокировок.
Прошла неделя, я написал Дереку: «кажется, что-то не так, скрапер не падал уже неделю», он ответил: «всё в порядке, просто работает» — странная фраза после двух месяцев постоянных сбоев.
Схема сейчас: Floppydata для резидентских IP, около $40 в месяц на все проекты. Бесплатный план 1Browser, десять профилей. У одного клиента команда из трёх человек работает на Gologin для облачного шаринга профилей, $24 в месяц, но я заставляю их использовать IP от Floppydata — потому что общий пул Gologin прошли все пользователи Gologin на свете.
Законен ли парсинг цен?
Каждый клиент рано или поздно спрашивает об этом. Парень с чехлами спросил во время первого звонка. Юридический отдел бренда по уходу за кожей не одобрял проект, пока не получил что-то в письменном виде. Поэтому я позвонил знакомому юристу — Елене, которая взяла с меня плату за консультацию, что я счёл невежливым между друзьями, но, судя по всему, среди юристов это норма.
Я сказал: «мой клиент хочет автоматически проверять цены конкурентов на публичных сайтах, его могут подать в суд?». Она сказала «скорее всего нет». Я сказал «можешь быть конкретнее?». Она сказала, что было решение Верховного суда в 2022 году и начала объяснять, я сказал «Елена, мне нужно да или нет». Она сказала «да, с оговорками» и прислала письмо на две страницы, которое я переслал непрочитанным юридическому отделу бренда. Они одобрили проект. Парень с чехлами просто ответил «круто».
За три года парсинга цен в e-commerce ближайшее к неприятностям — письмо с требованием прекратить деятельность, которое оказалось шаблоном, рассылаемым одной юридической фирмой всем, чей парсинг фигурирует в их серверных логах. Я ответил. Они — нет. Елена раз в несколько месяцев спрашивает, подавали ли меня в суд. Нет. Она звучит слегка разочарованно, что я решил не принимать на свой счёт.
С чего начать парсинг цен
В прошлом месяце мне написал в LinkedIn некий Радж по поводу парсинга цен для своего бренда добавок. Я написал длинный ответ, потом удалил и написал короче: «выбери одного конкурента, десять товаров, напиши скрипт, запусти из дома, пока ничего не покупай, подожди, пока не сломается, потом напиши снова».
Он написал через четыре дня: «Amazon постоянно кидает CAPTCHA». Я отправил ему ссылку на Floppydata и написал «стена первая». Через неделю написал снова — почему некоторые Shopify-магазины возвращают пустые цены. Я ответил «стена вторая, используй Puppeteer». Жду стену третью. Он пока не знает про фингерпринты. Когда спросит — пришлю эту статью.
Дерек написал мне сегодня утром, пока я это писал. Спросил «ты упомянул меня?», я ответил «ты практически в каждом абзаце». Он сказал «хорошо», потом через минуту прислал: «ты написал про то, что парсинг — это простая часть?». Я сказал да, Дерек, написал. Он ответил «хорошо, потому что я говорил тебе это с первого дня, а ты три месяца игнорировал». Радж, скорее всего, послушается быстрее, чем я. Большинство людей так и делают. Дерек передаёт привет.