FlashProxy Logo

FlashProxy

ПосібникиПосібникиПроксі

Створіть трекер цін Amazon на Python (Чесний Спосіб)

Створіть трекер цін Amazon на Python (Чесний Спосіб)

Побудуйте робочий трекер цін за допомогою Python і Selenium, з реальними тестами того, що насправді вас блокує.

К
Команда FlashProxy
21 червня 2026 р.
7 хв читання

Ключові висновки

  • Сторінки продуктів рідко блокують скрейпери; під час тестування 150 запитів пройшли без жодної блокади.
  • Сторінки пошуку Amazon блокують з першого ж запиту, навіть з проксі.
  • Блокування більше пов'язане з тим, що ви не є реальним браузером, ніж з вашою IP-адресою.
  • Проксі, прив'язаний до країни, потрібен для коректних локальних цін, а не просто щоб уникнути блокувань.

Я думав, що знайшов найдешевший PlayStation 5 в інтернеті.

Мій трекер цін надрукував $74,00 поруч з PS5, але якщо це звучить занадто добре, щоб бути правдою онлайн, то це майже завжди так. Той $74 не був консоллю. Це був скрейпер, який захопив неправильний елемент, і це саме той вид мовчазної помилки, яка робить більшість посібників «трекер цін Amazon» беззаперечно малокорисними.

Тому замість того, щоб просто опублікувати п'ятдесят рядків Python і на цьому закінчити — що робить майже кожен посібник — я все це належно протестував. Я запустив це проти Amazon у великому обсязі, точно виміряв, що блокується, а що ні, і виправив помилки, які посібники ніколи не згадують. Результати були справді дивовижними: голий скрейпер звернувся до сторінки продукту 150 разів без жодного блокування, але був зупинений з першого ж запиту до сторінки пошуку.

Цей посібник — це робочий трекер плюс все, що виявило тестування, включаючи трюк Selenium, який варто знати навіть якщо ви раніше вже будували скрейпери: він керує реальним вікном Chrome у візуальному режимі, тому ви спостерігаєте, як сторінка завантажується і скрейпиться в реальному часі.

Amazon насправді вас заблокує?

Кожен посібник попереджає, що Amazon негайно заблокує ваш скрейпер. Тому я це протестував, і результати мене справді збентежили.

Я спрямував голий, простий скрейпер на сторінку продукту PlayStation 5 і просто дав йому молотити без зупину. Один запит, два, десять, п'ятдесят — я чекав стіни. Вона так і не прийшла. Ця штука відправила 150 запитів на ту саму сторінку, і кожен повернув «ok». Я не міг повірити, наскільки все було відкрито.

Так і було. Виявляється, сторінки продуктів майже не реагують. Потім я спрямував той же скрейпер на сторінку результатів пошуку, і він впав з першого ж запиту. Не з десятого, не з п'ятдесятого. З першого. 503 одразу.

Результати пошуку — це те місце, де відбувається справжній збір даних, тому саме там Amazon зосереджує свій захист. Окремі сторінки продуктів? Абсолютно відкриті.

Ось що я спробував і що сталося:

  • Сторінка продукту, голий скрейпер: 150 запитів, нуль блокувань

  • Сторінка пошуку, голий скрейпер: заблокований на запиті #1 (503)

  • Сторінка пошуку, кращі заголовки: все одно заблокований на запиті #1

  • Сторінка пошуку, заголовки + резидентський проксі: все одно заблокований на запиті #1

  • Сторінка пошуку, реальний браузер: працює, 16 результатів

  • Сторінка пошуку, браузер + проксі США: працює, 22 результати

Найбільше мене здивувало ось що: використання резидентського проксі на сторінці пошуку взагалі не допомогло. Все одно заблокований, перший запит. Блокування ніколи не стосувалося моєї IP-адреси — справа була в тому, що я не був реальним браузером. Як тільки я завантажив ту саму сторінку пошуку в справжньому браузері замість сирого скрипту, все запрацювало:


Побудова трекера

Давайте побудуємо це. Весь трекер займає близько 50 рядків Python. Вам потрібен Python 3 та Google Chrome, потім одна команда для встановлення бібліотек:

pip install selenium requests matplotlib

Спрямування його на продукт

Кожен продукт Amazon має ідентифікатор, який називається ASIN, — 10-символьний код у URL одразу після /dp/. Наприклад, у amazon.com/dp/B0F1J12R6N ASIN — це B0F1J12R6N. Це все, що потрібно трекеру для пошуку продукту.

Чому requests недостатньо

Очевидний спосіб скрейпити сторінку — це бібліотека requests Python: один рядок, збери HTML, готово. І для сторінки продукту це навіть повертає 200 OK. Але ось пастка, в яку я впав: 200 не означає, що ви отримали дані. Amazon будує ціну на сторінці за допомогою JavaScript, а requests не запускає JavaScript. Тому ви отримуєте сторінку, але ціни в ній немає.

Ось чому цей трекер використовує Selenium. Selenium керує реальним браузером Chrome: він дійсно відкриває сторінку, запускає JavaScript і дозволяє вам читати повністю відрендерений результат. Перший раз, коли ви його запустите, Chrome відкривається самостійно з банером «Chrome керується автоматизованим тестовим програмним забезпеченням», і ви спостерігаєте, як він працює в реальному часі.

Скрейпинг ціни (і помилка, яку всі розповсюджують)

Саме тут більшість посібників непомітно ламаються. Звичайний підхід захоплює елемент .a-price і читає його текст. Проблема: Amazon розміщує ціну в цьому елементі двічі — один раз видимо, один раз для читачів екрану, — тому ви отримуєте захаращений $449,00$449,00 замість чистого числа.

Рішення — націлитися на чисту, єдину копію ціни всередині блоку покупки і читати її уважно, спочатку перевіривши основну ціну блоку покупки, щоб випадково не захопити ціну аксесуара — саме так я і отримав той «PS5 за $74». Точні селектори знаходяться в коді на GitHub.

Як тільки він націлиться на правильний елемент, ціна повертається чистою:

Збереження історії та побудова графіків

Трекер цін корисний лише тоді, коли він пам'ятає. Скрипт зберігає кожне зчитування у файл, прив'язаний до продукту, зберігаючи ціну як справжнє число плюс його валюта, а не як рядок «$54,00». Це має значення: числа можна відображати на графіку, порівнювати та знаходити мінімальне; рядки — ні. Залишений сам по собі, скрипт перевіряє один раз і зупиняється; додайте параметр циклу, і він перевірятиме за розкладом, накопичуючи історію з часом, яку другий невеликий скрипт перетворює на графік зміни ціни в часі.

Помилка, яка мені мало не коштувала: можливо, ви скрейпите дані не тієї країни

Пам'ятаєте той PlayStation за $74? Це була перша ознака того, що щось не так. Друга була гірша, тому що її було важче помітити.

Коли я вперше запустив трекер без проксі, Amazon не просто давав мені дивні ціни — для деяких продуктів він взагалі не давав мені реальної ціни, лише повідомлення «цей товар не може бути доставлений у ваше місцезнаходження». Трекеру не було що записувати.

Тому я спрямував його через проксі, щоб виглядати як американський покупець. Ціна повернулася в євро. Спочатку я вирішив, що проксі взагалі не спрацював. Потім я помітив, що на сторінці було написано «Доставити до Ірландії», і до мене дійшло: проксі спрацював нормально, просто він підключив мене через ірландську IP. Правильна ідея, неправильна країна.

Рішення — резидентський проксі, прив'язаний до країни, яка вас насправді цікавить. Як тільки я зафіксував свій на США, трекер щоразу повертав правильну ціну — $54,00 у доларах.

І це прив'язування до країни — не приємне доповнення, а сама суть. Припустімо, ви відстежуєте ціни конкурентів, щоб вирішити, що стягувати на певному ринку. Ці цифри мають сенс лише тоді, якщо це ціни, які цей ринок дійсно бачить. Один і той же продукт може коштувати $449 у США та €499 в Ірландії. Якщо ваш скрейпер непомітно повертає ірландську ціну, ви приймаєте рішення для одного ринку на основі даних іншого, і оскільки це виглядає правильним, ніхто цього не помітить.

Тому проксі тут не для того, щоб обхитрити блокади — мої тести показали, що сторінки продуктів майже не блокують. Це для того, щоб переконатися, що зібрані дані є правильними.

Якщо вам потрібні дані про ціни, прив'язані до конкретної країни, резидентські проксі FlashProxy дозволяють вам націлюватися на будь-яке місцезнаходження, тому ви завжди збираєте ціни, які цей ринок дійсно бачить.

Тож… це мало бути складніше?

Ось мій чесний висновок: якщо вам коли-небудь потрібно скрейпити ціни зі веб-сторінки, вам не потрібно читати сотню блогів, дивитися купу відео на YouTube або постійно докучати ШІ, доки він нарешті не зрозуміє. Ви можете просто зробити це самостійно. Це надзвичайно легко, і чесно кажучи, це майже тривожно — наскільки легко.

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

Нічого не сталося. Буквально нічого. 150 запитів на сторінку продукту, без проксі, без блокувань, без заборон, без розгніваного листа. Стіна, до якої я готувався, здебільшого виявилася вигадкою, а там, де вона справді була (сторінки пошуку), реальний браузер просто пройшов крізь неї.

Тому якщо єдине, що стримувало вас від створення такого трекера, — це припущення, що це складно або ризиковано: це не так. Створіть його. Просто будьте розсудливі, відстежуйте публічні ціни, не молотіть сайт і поважайте їхні умови. Але страх? Здебільшого у вашій голові — так само, як і в моїй.

Повний код

Повний проект — трекер, помічник проксі, побудова графіків та тестові скрипти — має відкритий вихідний код: amazon-price-tracker-python на GitHub. Клонуйте та запустіть, або прочитайте, як саме це працює.

PythonВеб-скрейпінгAmazonВідстеження цінПроксі

Часті запитання