Виграй 1 ТБ резидентного трафіку, iPhone 18 Pro Max + ще 33 призи$50 на баланс = 1 квитокПриєднатись
Бізнес

Amazon Scraper: як збирати дані про товари, ASIN та відгуки

Amazon Scraper: як збирати дані про товари, ASIN та відгуки

Підсумуйте цю статтю за допомогою ШІ:


Ваш експорт товарів Amazon виглядає готовим до аналізу, доки ви не перевірите кілька рядків. Дві ціни відносяться до різних розмірів, терміни доставки відображають різні поштові індекси, а зібрані відгуки охоплюють лише частину очікуваних коментарів. Ці прогалини можуть спотворити порівняння цін або спрямувати дослідження товарів хибним шляхом.

Скрейпер Amazon допомагає збирати дані, але корисні результати залежать від того, як ви налаштуєте завдання і перевірите його результат. Цей гайд проведе вас через вибір між Python, скрейпинг -API та no-code інструментами, а потім через збір даних про товари, ASIN і відгуки з однаковими налаштуваннями. Ви також дізнаєтеся, як перевіряти точність місцезнаходження, обробляти відсутні поля та створити повторюваний робочий процес перед масштабуванням.

Коротко

  • Виберіть метод: Створюйте скрейпер Amazon на Python, коли вам потрібна кастомна логіка і ви можете підтримувати код. Обирайте керований API, щоб скоротити роботу з видобування даних, або no-code інструмент для швидкого експорту з мінімальним налаштуванням.

  • Використовуйте проксі там, де це потрібно робочому процесу: Проксі забезпечують маршрутизацію мережі та контроль IP для кастомних скриптів. Підбирайте ротацію або sticky-сесії під завдання, потім перевіряйте налаштування доставки Amazon і видобуті дані.

  • Зберігайте однаковість порівнянь: Зберігайте ASIN, обраний варіант, продавця, ціну, валюту, маркетплейс, поштовий індекс доставки, вихідний URL і часову мітку збору.

  • Перевіряйте охоплення відгуків окремо: Фільтри, пагінація та обмеження доступу можуть скоротити вашу вибірку. Записуйте те, що ви зібрали, замість того щоб припускати, що експорт містить усі відгуки.

Що таке скрейпер Amazon і які дані він може збирати?

Скрейпер Amazon — це інструмент, який видобуває інформацію зі сторінок Amazon і організовує її у структуровані записи, такі як CSV-файл, таблиця або JSON-вивід. Замість ручного копіювання даних про товари ви надаєте URL, пошукові запити або ASIN залежно від інструменту і вказуєте потрібну інформацію.

Типові поля включають назви товарів, ASIN, бренди, ціни, валюти, обрані варіанти, імена продавців, доступність, рейтинги та кількість відгуків. Деякі інструменти також збирають результати пошуку та окремі відгуки покупців, хоча охоплення залежить від інструменту і того, до чого він має доступ.

Компанії використовують ці дані для моніторингу цін, порівняння конкуруючих товарів, відстеження змін асортименту та аналізу відгуків клієнтів. Для скрейпингу даних про товари Amazon з метою надійного порівняння кожен запис потребує контексту: який варіант і продавця він представляє, яке місцезнаходження доставки застосовувалося і коли інформацію було зібрано.

Дані про товари, ціни, продавці та доступність

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

Поле

Що збирати

Назва та бренд

Відображувана назва товару та бренд для ідентифікації та групування.

ASIN

Ідентифікатор Amazon, пов'язаний із товаром, що збирається.

Обраний варіант

Розмір, колір, об'єм, кількість в упаковці або інші обрані опції.

Ціна та валюта

Відображувана ціна пропозиції та її валюта, з купонами або умовними знижками, записаними окремо.

Продавець

Продавець, прикріплений до пропозиції; інформацію про виконання замовлення зберігайте окремо, де доступно.

Доступність

Відображуваний статус, такий як у наявності, тимчасово недоступний або доступний для передзамовлення.

Оцінка доставки

Дата доставки або діапазон, відображуваний для обраного пункту призначення.

URL джерела

Адреса сторінки, щоб ви могли відстежити та перевірити запис.

💡

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

Результати пошуку, рейтинги та відгуки покупців

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

Тип даних

Корисні поля

Бізнес-застосування

Що потрібно перевірити

Результати пошуку

Запит, ASIN, назва, позиція, відображена ціна, мітка спонсорства

Відстежувати видимість товарів і знаходити конкуруючі позиції

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

Сторінки товарів

ASIN, варіант, ціна, продавець, наявність

Порівнювати пропозиції та відстежувати зміни товарів

Підтверджуйте обраний варіант, продавця та місце доставки перед порівнянням записів.

Зведені рейтинги

Середня оцінка в зірках, загальна кількість оцінок, розподіл по зірках (де доступно)

Відстежувати загальну думку покупців

Кількість оцінок не дорівнює кількості письмових відгуків, доступних для збору.

Окремі відгуки

ID відгуку, зірки, заголовок, текст, дата, індикатор підтвердженої покупки

Виявляти повторювані скарги та сильні сторони товару

Фільтри, сортування та обмеження доступу можуть призвести до неповної або зміщеної вибірки.

При парсингу даних товарів Amazon зв'язуйте ці набори даних через ідентифікатори, такі як ASIN, зберігаючи при цьому їхні окремі значення.

Налаштуйте доступ до проксі для вашого скрейпера Amazon за допомогою CyberYozh App

CyberYozh App надає проксі-інфраструктуру для керування мережевим підключенням вашого скрейпера Amazon. Підбирайте тип проксі та поведінку сесій під процес збору даних, а потім оцінюйте продуктивність за коректно витягнутими записами, а не лише за успішністю підключення.

Обирайте ротаційні резидентські проксі або sticky-сесії залежно від завдання

Ротаційні резидентські підключення підходять для незалежних завдань збору даних, яким не потрібно зберігати одну й ту саму мережеву адресу між завданнями. Для пов'язаних запитів, таких як встановлення місця доставки та відкриття кількох сторінок товарів, використовуйте sticky-сесію, щоб зберегти IP, поки ваш додаток зберігає cookies і стан браузера.

🦔

Ротаційні резидентські проксі CyberYozh підтримують ротаційні та sticky-сесії, повний доступ до API та щомісячне перенесення трафіку. Тарифікація за використанням із перенесенням підходить для регулярних досліджень, обсяг яких змінюється між спокійними періодами та великими зборами даних, оскільки невикористаний трафік переноситься на наступний розрахунковий місяць.

Оцініть мобільні проксі, статичні ISP та датацентрові варіанти

Порівнюйте ці варіанти, використовуючи однакову вибірку товарів, вимоги до місцезнаходження та критерії прийняття.

Тип проксі

Де може підійти

Що потрібно оцінити

Мобільні LTE/4G/5G

Регулярний збір даних, де корисний доступ через мережу оператора та контроль зміни IP

Доступні локації, поведінку ротації, пропускну здатність та застосовність результатів у вашій задачі

Статичні ISP

Задачі, де важливо зберігати одну виділену IP-адресу протягом кількох сесій

Безперервність сесії, відповідність локації та продуктивність з часом

Датацентрові

Задачі, де пріоритетні швидкість підключення та вартість інфраструктури

Чи повертають цільові сторінки повні та застосовні дані при прийнятних витратах

💡

Порада: У CyberYozh App доступний безлімітний трафік у тарифах на мобільні, статичні ISP та датацентрові проксі. Це робить витрати на трафік більш передбачуваними при частому зборі даних, тоді як пакети ротаційних резидентських проксі залишаються тарифікованими за трафіком, оскільки невикористаний трафік автоматично переноситься на наступний розрахунковий місяць. Перед замовленням перевірте локацію, швидкість та умови підключення обраного тарифу.

Підключіть, перевірте та відстежуйте процес

Підключіть проксі через HTTP-клієнт Python або налаштування проксі, підтримувані інструментами автоматизації, такими як Scrapy, Playwright, Puppeteer, Selenium або іншим сумісним фреймворком. CyberYozh надає повний доступ до API та підтримку інтеграції, а точна конфігурація залежить від інструмента та обраного протоколу проксі.

Дотримуйтесь цієї послідовності налаштування:

  1. Отримайте дані підключення. Скопіюйте хост, порт, протокол та дані автентифікації з конфігурації проксі. Зберігайте облікові дані у змінних оточення або менеджері секретів.

  2. Налаштуйте поведінку сесії. Виберіть ротацію для незалежних задач або sticky-сесію для пов'язаних запитів. Зберігайте cookies окремо у вашому застосунку.

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

  4. Перевірте контекст доставки Amazon. Вкажіть та перевірте адресу доставки на сторінці товару незалежно від локації проксі.

  5. Запустіть невелику задачу збору даних. Відстежуйте застосовні записи, час відгуку, відсутні поля, витрати трафіку та повторювані помилки перед збільшенням обсягу.

🦔

У CyberYozh доступні перевірки репутації IP, які можуть надати додатковий контекст при дослідженні проблем із підключенням.

Виберіть парсер Amazon: Python, API або інструмент без коду

Обирайте парсер Amazon виходячи з того, як часто вам потрібні дані, який рівень контролю потребує задача та хто його підтримуватиме. Разове порівняння товарів висуває інші вимоги, ніж щоденний збір даних для внутрішньої панелі управління.

Python підходить для процесів, де потрібні користувацькі правила вилучення, валідація або зберігання даних. Ви контролюєте код, але ваша команда також відповідає за обробку помилок парсингу, зміни сторінок та поточне обслуговування.

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

No-code скрейпер добре підходить для швидких досліджень і простого експорту даних. Перевірте ліміти на пакетну обробку, можливості планування та налаштування, якщо очікуєте зростання обсягу роботи.

Python для кастомного збору та валідації

Python дає вам контроль над тим, які дані збирає ваш Amazon-скрейпер і що відбувається з кожним записом після цього. Ви можете обрати поля, необхідні для дослідження, запланувати збір під дедлайни звітів і зберігати результати безпосередньо в CSV-файли, бази даних або внутрішні системи. Кастомні правила валідації можуть позначити відсутню валюту, несподіваний ASIN або змінений варіант товару до того, як запис потрапить в аналіз.

Ви також контролюєте, як скрейпер обробляє помилки. Наприклад, ви можете повторити спробу при тимчасовій помилці з'єднання в заданих межах, окремо записати недоступний товар у лог і призупинити задачу, коли повторювані відповіді містять несподіваний контент.

Amazon scraper API для керованого видобування

Amazon scraper API дозволяє вашому застосунку запитувати дані без необхідності самостійно підтримувати кожну частину процесу збору. Залежно від сервісу провайдер обробляє отримання сторінок, проксі-інфраструктуру, повторні спроби, рендеринг і парсинг, а потім повертає структуровані результати. Перевірте, що входить у послугу: деякі ендпоінти повертають необроблений контент сторінки, який все ще потребує видобування.

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

No-code інструменти для невеликих експортів і швидких досліджень

Браузерні розширення та готові скрейпери зручні для збору короткого списку конкуруючих товарів, перевірки відображуваних цін або експорту списків для дослідницького звіту. Зазвичай ви надаєте URL товарів або відкриваєте підтримувану сторінку, обираєте доступні поля та експортуєте результати без написання коду для збору.

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

Чи існує офіційний Amazon API для скрейпінгу?

Amazon надає офіційні API для певних бізнес-задач, але вони відрізняються від сторонніх сервісів, які видобувають контент із сайту. Якщо ви шукаєте Amazon API для скрейпінгу, спочатку перевірте, чи надає офіційний API інформацію, необхідну вашому проєкту.

Selling Partner API (SP-API) підтримує авторизовані робочі процеси продавців і постачальників. Доступ залежить від застосунку, необхідних ролей і відповідного процесу авторизації; наявність облікового запису покупця на Amazon сама по собі не дає доступу. Публічні застосунки зазвичай вимагають авторизації партнера-продавця, тоді як приватні застосунки використовують самоавторизацію.

Amazon також пропонує Customer Feedback API, який надає аналітику відгуків на рівні ASIN і категорії товарів, а також аналітику повернень на рівні категорії. Він охоплює теми та тренди, а не надає повний експорт кожного окремого відгуку. Доступ вимагає відповідної ролі, такої як Brand Analytics або Selling Partner Insights.

Сторонній Amazon scraper API — це сервіс видобування даних окремого провайдера. Його облікові дані, підтримувані поля та тарифікація належать цьому провайдеру, і підписка не дає авторизацію Amazon.

Метод

Підходить для

Складність налаштування

Обслуговування

Модель оплати

Власний скрейпер на Python

Налаштовувані поля, валідація та процеси збереження даних

Висока: потрібно написати й протестувати код збору

Ваша команда обслуговує парсинг, залежності та обробку помилок

Розробка, хостинг і будь-які витрати на проксі

Керований API для скрейпінгу

Регулярний збір даних із меншим обсягом інфраструктури для вилучення

Середня: інтеграція API та перевірка результатів

Провайдер обслуговує вилучення даних; ви обслуговуєте інтеграцію та перевірку даних

Запити, кредити, записи або підписка

No-code інструмент

Швидке дослідження та простий експорт

Низька: налаштування вхідних даних і доступних полів

Перевірка шаблонів, невдалих завдань і якості експорту

Безкоштовний ліміт, підписка або кредити на використання

Офіційний API Amazon

Підтримувані бізнес-процеси з необхідним доступом

Варіюється: реєстрація, ролі, авторизація та інтеграція

Підтримка дозволів, сумісності API та обробки даних

Перевірка застосовних комісій програми та витрат на інтеграцію

Як збирати дані про товари Amazon за допомогою Python

Корисний гайд з Python має провести вас від URL товару до структурованого запису, який можна перевірити. Ми побудуємо цей процес поетапно: визначимо необхідні поля, налаштуємо проєкт, завантажимо сторінку, вилучимо дані про товар і експортуємо результати в CSV або JSON.

Почніть із невеликого набору URL товарів, щоб можна було порівняти результат з вихідними сторінками. Кожен запис має містити ASIN, обраний варіант, ціну, валюту та часову мітку збору, при цьому відсутні значення мають бути чітко позначені.

Визначте поля, маркетплейс і область збору даних

Перш ніж писати скрейпер, вирішіть, що має містити один повний запис і які умови мають залишатися незмінними між запусками. Для цього гайду почніть із невеликого списку URL товарів з одного маркетплейсу Amazon.

Параметр

Що визначити

Маркетплейс

Оберіть домен Amazon, який хочете досліджувати, наприклад Amazon.com для США.

Вхідні URL

Використовуйте конкретні URL сторінок товарів і визначте варіанти, які збираєтеся відстежувати.

Обов'язкові поля

Почніть із ASIN, назви, обраного варіанта, ціни, валюти, наявності, вихідного URL і часової мітки збору. Додайте дані про продавця та доставку, якщо вони потрібні для вашого аналізу.

Контекст доставки

Оберіть країну призначення та поштовий індекс, потім переконайтеся, що метод збору застосовує їх. Неперевірені налаштування записуйте як невідомі.

Частота збору

Налаштуйте розклад відповідно до задачі, для якої потрібні дані, почавши з одноразового запуску перед впровадженням регулярних завдань.

Визначте, які відсутні поля роблять запис непридатним. Наприклад, відсутність ціни не дозволяє порівнювати ціни, але може залишити корисну інформацію про наявність. Зберігайте цю різницю, щоб ваш парсер Amazon міг позначати неповні записи, не відкидаючи коректні дані.

Налаштування проєкту парсера Amazon на Python

Почніть із віртуального оточення, щоб ізолювати залежності проєкту від інших Python-застосунків. Цю конфігурацію було перевірено з Python 3.12.14, Requests 2.34.2 і Beautiful Soup 4.15.0. Встановлення, імпорти та парсинг прикладів HTML пройшли успішно; вилучення даних із реального Amazon на цьому етапі не тестувалося.

Requests обробляє HTTP-запити, а Beautiful Soup вилучає поля з отриманого HTML. Жодна з бібліотек не виконує JavaScript.

Створіть папку проєкту та віртуальне оточення:

bash
mkdir amazon-scraper

cd amazon-scraper

python -m venv .venv

Активуйте оточення командою для вашої операційної системи.

macOS або Linux 

bash
source .venv/bin/activate

Windows 

plaintext
.\.venv\Scripts\Activate.ps1 

Встановіть перевірені версії залежностей:

bash
python -m pip install requests==2.34.2 beautifulsoup4==4.15.0

Створіть файл amazon_scraper.py і додайте початкову конфігурацію нижче. Вставте цільові URL товарів у PRODUCT_URLS, укладаючи кожен URL у лапки та розділяючи записи комами. 

python
</> python

import os

from urllib.parse import urlparse

import requests

from bs4 import BeautifulSoup

MARKETPLACE = "www.amazon.com"

REQUEST_TIMEOUT = 30

OUTPUT_FILE = "amazon_products.csv"

PRODUCT_URLS = [

    # Add your target Amazon product URLs here.
]

for url in PRODUCT_URLS:

    parsed = urlparse(url)

    if parsed.scheme != "https" or parsed.hostname != MARKETPLACE:

        raise ValueError("Each URL must use the selected marketplace.")

session = requests.Session()

# Optional: supply the full proxy URL through your environment.

proxy_url = os.environ.get("AMAZON_PROXY_URL")

if proxy_url:

    session.proxies.update({

        "http": proxy_url,

        "https": proxy_url,
    })

Зберігайте паролі проксі та API-ключі у змінних оточення, що надаються через середовище розробки або менеджер секретів розгортання. Уникайте вбудовування облікових даних у скрипт, їхнього коміту в Git або виведення в логи.

💡

Порада: Ця конфігурація підготовує сесію, але не завантажує сторінки товарів і не встановлює поштовий індекс доставки Amazon. Залишайте контекст доставки неперевіреним, поки процес збору явно не застосує та не перевірить його.

Завантаження сторінки товару та перевірка отриманої відповіді

Успішна HTTP-відповідь не гарантує, що ваш парсер Amazon отримав сторінку товару. Сервер може повернути HTTP 200 OK з перевіркою, екраном входу або іншою неочікуваною сторінкою, тому перевіряйте і статус відповіді, і вміст перед вилученням полів товару.

Додайте функцію нижче після конфігурації сесії. Вона перевіряє збої запиту, неочікувані переспрямування, не-HTML-відповіді, поширені індикатори перевірки та елемент заголовка товару.

python
def fetch_product_page(url):

    try:

        response = session.get(url, timeout=REQUEST_TIMEOUT)

        response.raise_for_status()

    except requests.RequestException:

        # Avoid logging exception details that could expose proxy credentials.

        raise RuntimeError(

            "Request failed. Check connectivity and the HTTP response."

        ) from None



    if urlparse(response.url).hostname != MARKETPLACE:

        raise RuntimeError("The request redirected to another domain.")



    content_type = response.headers.get("Content-Type", "").lower()

    if "text/html" not in content_type:

        raise RuntimeError("Expected HTML but received another content type.")


    soup = BeautifulSoup(response.text, "html.parser")

    page_text = soup.get_text(" ", strip=True).lower()


    challenge_markers = (

        "enter the characters you see below",

        "sorry, we just need to make sure you're not a robot",

        "validatecaptcha",
    )



    if (

        soup.select_one('form[action*="validateCaptcha"]')

        or any(marker in page_text for marker in challenge_markers)

    ):

        raise RuntimeError(

            "A challenge page was returned. Pause and review the request."

        )



    title = soup.select_one("#productTitle")

    if title is None or not title.get_text(strip=True):

        raise RuntimeError(

            "Product title not found. The page may be unexpected "

            "or its structure may have changed."

        )


    return soup, response.url

Викличте функцію для одного URL перед обробкою повного списку: 

python
if not PRODUCT_URLS:
    raise SystemExit("Add a product URL to PRODUCT_URLS first.")

try:
    soup, final_url = fetch_product_page(PRODUCT_URLS[0])
    print("Page passed the initial checks.")
    print("Title:", soup.select_one("#productTitle").get_text(strip=True))
except RuntimeError as error:
    print("Collection stopped:", error)

Beautiful Soup парсить HTML тут для перевірки його структури; вилучення запису товару слідує далі. Ці перевірки попередні: формулювання перевірок і макети сторінок можуть змінюватися, а виявлення заголовка не підтверджує запитуваний ASIN, обраний варіант або місцезнаходження доставки. Перевіряйте їх окремо перед прийняттям запису. 

Вилучення полів товару та обробка відсутніх значень

Після проходження сторінкою початкових перевірок вилучіть невеликий набір полів: ASIN, заголовок, відображувану ціну та наявність. Зберігайте вихідний URL і часову мітку збору з кожним записом, щоб можна було відстежити його пізніше.

Використовуйте None, коли поле відсутнє. Відсутність ціни може означати, що пропозиція недоступна, сторінка потребує іншого вибору або селектор більше не збігається. Перетворення на нуль внесе хибну ціну у ваш аналіз.

Додайте наступне нижче ваших існуючих функцій.

python
from datetime import datetime, timezone


def text_or_none(soup, selector):
    element = soup.select_one(selector)
    if element is None:
        return None
 return element.get_text(" ", strip=True) or None


def extract_product_fields(soup, source_url):
    asin_element = soup.select_one("input#ASIN")
    asin = (
        asin_element.get("value", "").strip() or None
        if asin_element is not None
        else None
    )

    # Limit extraction to the main price area to reduce the chance
    # of collecting a price from recommendations or another offer.
    price_text = text_or_none(
        soup,
        "#corePriceDisplay_desktop_feature_div "
        ".priceToPay .a-offscreen",
    )

    return {
        "asin": asin,
        "title": text_or_none(soup, "#productTitle"),
        "price_text": price_text,
        "availability_text": text_or_none(soup, "#availability"),
        "source_url": source_url,
        "collected_at": datetime.now(timezone.utc).isoformat(),
    }

Зберігайте ціну як відображуваний текст на цьому етапі. Розділення числового значення та валюти потребує перевірки за форматом маркетплейсу; одного символу валюти може бути недостатньо для однозначного визначення.

Після успішного завантаження викличте функцію вилучення:

record = extract_product_fields(soup, final_url)

missing_fields = [
    field
    for field in ("asin", "title", "price_text", "availability_text")
    if record[field] is None
]

print(record)
print("Missing fields:", missing_fields)

Помістіть цей виклик усередину успішного блоку try з попереднього кроку, одразу після fetch_product_page(), щоб вилучення не запускалося після невдалого запиту. 

Відсутнє значення має викликати перевірку, а не розширений пошук будь-якої ціни на сторінці. Перед використанням запису для порівнянь також перевірте запитуваний ASIN, обраний варіант, продавця та контекст доставки. 

Експорт у CSV або JSON і перевірка зразка

Експортуйте кожен запис товару з вихідним URL, часовою міткою збору, маркетплейсом і контекстом доставки. Зберігайте запитуваний поштовий індекс окремо від фактично спостережуваного на сторінці місцезнаходження: введення цілі у вашій конфігурації не доводить, що Amazon застосував його.

JSON зберігає відсутні значення як null, тоді як цей експорт CSV залишає їх порожніми. Жоден формат не повинен замінювати відсутню ціну нулем.

Додайте цю функцію нижче ваших існуючих функцій.

python
import csv
import json


def export_records(records, csv_path, json_path):
    if not records:
        raise ValueError("No records to export.")

    fields = list(records[0])

    with open(csv_path, "w", encoding="utf-8", newline="") as file:
        writer = csv.DictWriter(file, fieldnames=fields)
        writer.writeheader()
        writer.writerows(records)

    with open(json_path, "w", encoding="utf-8") as file:
        json.dump(
            records,
            file,
            ensure_ascii=False,
            indent=2,
            allow_nan=False,
        )

Замініть попередній тестовий блок з одним URL наступним. Він зв'язує завантаження, вилучення та експорт, використовуючи вже визначені функції. 

python
if not PRODUCT_URLS:
    raise SystemExit("Add a product URL to PRODUCT_URLS first.")

# Leave unknown until you implement delivery-location controls.
REQUESTED_DELIVERY_ZIP = None

try:
    soup, final_url = fetch_product_page(PRODUCT_URLS[0])
    record = extract_product_fields(soup, final_url)

    record.update({
        "marketplace": urlparse(final_url).hostname,
        "requested_delivery_zip": REQUESTED_DELIVERY_ZIP,
        "observed_delivery_zip": None,
        "delivery_location_verified": False,
    })

    export_records(
        [record],
        OUTPUT_FILE,
        "amazon_products.json",
    )
    print("Exported one record. Validate it before using it.")

except (RuntimeError, ValueError, OSError) as error:
    print("Job stopped:", type(error).__name__)

Нижче наведено приклад, що показує, як відображаються відсутні поля. 

json
{
  "asin": null,
  "title": "Sample product, blue",
  "price_text": null,
  "availability_text": null,
  "source_url": "https://www.amazon.com/dp/EXAMPLE123",
  "collected_at": "2026-10-14T14:00:00+00:00",
  "marketplace": "www.amazon.com",
  "requested_delivery_zip": null,
  "observed_delivery_zip": null,
  "delivery_location_verified": false
}

Перевірка валідації: Функцію експорту було протестовано на Python 3.12.14 із прикладом запису. JSON зберіг відсутні значення та булевий прапорець місцезнаходження, CSV зберіг заголовок із комою та залишив відсутні значення порожніми, а порожній ввід було відхилено. Це підтверджує поведінку експорту; це не підтверджує отримання даних з Amazon у реальному часі або роботу селекторів.

Перед запуском за розкладом вашого проєкту Amazon scraper Python перевірте кілька записів, порівнявши їх із вихідними сторінками:

  • Переконайтеся, що ASIN, обраний варіант і продавець відповідають потрібному товару та пропозиції.

  • Порівняйте відображувану ціну та валюту за однакових налаштувань доставки.

  • Перевірте часові мітки та вихідні URL, а також вивчіть відсутні обов'язкові поля.

  • Не використовуйте записи, що залежать від місцезнаходження, у порівняннях доти, доки їхній контекст доставки не буде перевірено.

Очікувані збої включають заблоковані запити, змінену структуру сторінок, відсутні дані про пропозиції та помилки запису файлів. Частковий запис усе ще може містити корисну інформацію, але він не повинен вважатися повним спостереженням ціни.

💡

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

Як використовувати Amazon ASIN scraper, не плутаючи товари

Amazon ASIN scraper допомагає вам скласти список ідентифікаторів товарів і отримати пов'язані з ними дані. Для надійних порівнянь зберігайте ці ідентифікатори прив'язаними до правильного маркетплейсу, обраного варіанта та пропозиції продавця. Інакше перемикання між товарами або пропозиціями може виглядати як зміна ціни.

Що таке Amazon Standard Identification Number?

Amazon Standard Identification Number (ASIN) — це 10-символьний буквено-цифровий ідентифікатор, що використовується для визначення товару в каталозі Amazon. Він дає вашому процесу збору точніше посилання, ніж назва товару, яка може змінюватися або збігатися з іншими позиціями.

Зберігайте маркетплейс разом із кожним ASIN і відрізняйте ідентифікатор від SKU продавця. ASIN визначає позицію в каталозі, тоді як SKU продавця визначає позицію у власній системі обліку цього продавця. API Amazon використовують ці ідентифікатори для різних операцій.

Витягування ASIN з URL товарів і результатів пошуку

Розглядайте виявлення ASIN як окремий етап від збору цін, доступності та інших даних про товар. Список ідентифікаторів вказує вашому скрейперу, які товари досліджувати; він не підтверджує, скільки ці товари коштують у даний момент.

Використовуйте цю послідовність під час збору даних Amazon ASIN:

  1. Виявіть ідентифікатори-кандидати. Витягніть їх із посилань на товари або атрибутів позицій у поверненому HTML сторінки пошуку. Збережіть вихідний URL і, для результатів пошуку, запит та позицію.

  2. Перевірте формат. Переконайтеся, що присутні рівно 10 літер або цифр. Проходження цієї перевірки підтверджує лише очікувану форму, а не те, що ASIN існує або представляє потрібний вам варіант.

  3. Видаліть дублікати з черги збору. Використовуйте маркетплейс і ASIN разом, щоб уникнути повторного отримання однієї й тієї самої позиції каталогу.

  4. Отримайте та перевірте дані товару. Порівняйте виявлений ідентифікатор із фактично поверненим товаром, потім перевірте обраний варіант перед прийняттям даних його пропозиції.

Зберігайте спостереження пошуку окремо від черги без дублікатів. ASIN, що з'являється в двох запитах, може потребувати лише одного отримання даних про товар, але обидві появи можуть мати значення для аналізу видимості.

Розділяйте батьківські товари, дочірні варіанти та пропозиції продавців

Батьківський ASIN групує пов'язані варіації і сам по собі не є товаром, доступним для покупки. Дочірній ASIN визначає конкретну варіацію, наприклад одну комбінацію розміру та кольору. Пропозиції продавців знаходяться нижче цієї ідентифікації товару і описують, хто його продає, у якому стані та за якою ціною.

Розглянемо наочний приклад:

Рівень

Приклад

Що має зберігати ваш скрейпер

Сімейство продуктів

Футболка, доступна в кількох розмірах і кольорах

Батьківський ASIN та його зв'язок з дочірніми продуктами

Обраний варіант

Синя футболка, розмір M

Дочірній ASIN, колір і розмір

Пропозиція продавця

Продавець A пропонує цей варіант новим за $18 плюс $3 за доставку

Ідентифікатор продавця, стан, ціна товару, доставка та час збору даних

Припустімо, наступний запуск фіксує синю футболку розміру L за $24. Це інший варіант, тому повідомляти про зростання ціни на $6 було б некоректно. Якщо ж футболка розміру M з'явиться за ціною $20 у продавця B, спостережувана пропозиція змінилася, але це не означає, що продавець A підвищив ціну.

Для моніторингу цін порівнюйте один і той самий маркетплейс, дочірній ASIN, продавця, стан і контекст доставки між моментами збору даних. Якщо ваша мета — відстежувати будь-яку пропозицію, яку відображає Amazon, фіксуйте зміну продавця явно, щоб пояснити, що саме змінилося.

Як збирати відгуки з Amazon і оцінювати охоплення

Щоб зрозуміти, як надійно збирати відгуки з Amazon, почніть з визначення потрібного вам зворотного зв'язку та перевірки того, скільки даних може отримати обраний метод. Скрейпер відгуків Amazon може повертати корисні записи, не охоплюючи при цьому всі відгуки, пов'язані з продуктом. Оцініть це охоплення, перш ніж робити висновки про думку покупців.

Оберіть поля відгуків, необхідні для вашого дослідження

Збирайте достатньо інформації, щоб аналізувати відгуки, виявляти дублікати та відстежувати кожен запис до джерела.

Поле

Чому це важливо

ID відгуку

Ідентифікує відгук для дедуплікації та повторного збору.

Рейтинг

Пов'язує письмовий відгук з його оцінкою в зірках.

Заголовок і текст

Фіксують коментарі покупця для аналізу тематики та тональності.

Дата відгуку

Допомагає відокремити недавній досвід від старіших відгуків.

Індикатор підтвердженої покупки

Зберігає мітку підтвердження покупки, якщо вона доступна; це не гарантія точності.

Відповідний варіант

Записує розмір, колір або іншу опцію, пов'язану з відгуком, коли вона відображається.

URL джерела

Надає посилання для перевірки вихідного відгуку.

💡

Зберігайте недоступні поля як пропущені значення. Наприклад, індикатор, який ваш скрейпер не зміг витягти, має залишатися невідомим, а не записуватися як «не підтверджено». Зберігайте часову мітку збору окремо від дати публікації відгуку.

Як збирати дані з Amazon за ZIP-кодом

Вивчення того, як збирати дані з Amazon за ZIP-кодом, починається з встановлення пункту призначення доставки та підтвердження того, що він залишається застосованим при зборі даних про продукт. Проксі США саме по собі не встановлює ZIP-код, який Amazon використовує для оцінки термінів доставки.

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

Встановіть і перевірте місцезнаходження доставки

Для браузерного процесу використовуйте таку послідовність:

  1. Відкрийте цільовий маркетплейс

  2. Відкрийте селектор місцезнаходження доставки Amazon

  3. Дочекайтеся оновлення сторінки

  4. Відкрийте цільовий товар і виберіть його варіант

  5. Зафіксуйте спостережуване місцезнаходження разом із полями товару

Зберігайте узгодженість налаштувань доставки та контексту сесії

Кілька налаштувань впливають на контекст збору даних, але вони служать різним цілям.

Налаштування

Її роль

Що перевіряти

Домен маркетплейсу

Обирає вітрину Amazon, до якої виконується запит

Запит і підсумкова сторінка використовують потрібний домен.

Адреса доставки або поштовий індекс

Вказує пункт призначення, що використовується для інформації про доставку

Сторінка товару відображає запитаний пункт призначення.

Куки та браузерна сесія

Зберігають обрані місцезнаходження та інші дані стану браузера

Місцезнаходження залишається застосованим після навігації та оновлення сторінки.

Місцезнаходження проксі

Керує точкою виходу в мережу

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

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

Порівнюйте один і той самий товар у контрольованих умовах

Почніть з одного дочірнього ASIN і двох поштових індексів, збираючи обидва спостереження за короткий проміжок часу. Зберігайте узгодженість обраного варіанта, стану товару, кількості та стану акаунта. По можливості залишайте продавця незмінним; якщо відображуваний продавець змінюється, зафіксуйте цю зміну, перш ніж інтерпретувати різницю в ціні.

Зберігайте ці дані з кожним спостереженням:

  • Запитаний поштовий індекс, спостережуване місцезнаходження доставки та статус перевірки.

  • Маркетплейс, дочірній ASIN, обраний варіант, продавець і стан.

  • Відображувана ціна товару, валюта, вартість доставки, наявність і термін доставки.

  • Вихідний URL і часова мітка збору.

Для невеликого порівняння використовуйте такий шаблон запису. Це тестова таблиця, а не реальні результати з Amazon.

Спостереження

Запуск для ZIP-коду A

Запуск для ZIP-коду B

Запитаний ZIP-код

10001

90001

Спостережуване місце доставки

Записати з відповіді

Записати з відповіді

Часова мітка збору

Записати фактичний час

Записати фактичний час

Дочірній ASIN і варіант

Записати й зіставити

Записати й зіставити

Продавець і стан

Записати й порівняти

Записати й порівняти

Ціна товару та доставка

Записати окремо

Записати окремо

Наявність і терміни доставки

Записати відображувані значення

Записати відображувані значення

💡

Порівняння за ZIP-кодами описує ці спостереження у вказаний час. Його не слід представляти як доказ постійної регіональної різниці цін.

Як обрати найкращий API для скрейпінгу e-commerce даних Amazon

Найкращий API для скрейпінгу даних про товари Amazon — той, який повертає потрібні вашому процесу поля, в правильних умовах збору й за прийнятною ціною. Оцінюйте провайдерів за однаковими вхідними даними та критеріями прийняття, щоб швидка, але неповна відповідь не перевершила на папері повільніший, але придатний запис.

Перевірте покриття полів, керування місцезнаходженням і підтримку відгуків

Перетворіть вимоги до набору даних на чек-лист перед тестуванням. Відокремте обов'язкові поля від необов'язкових: для моніторингу цін може знадобитися дочірній ASIN, продавець, ціна, валюта й контекст доставки, тоді як для дослідження товарів пріоритетними можуть бути назви, бренди, категорії та ідентифікатори.

Перевірте документацію по кожній необхідній можливості, а потім переконайтеся в її наявності у вихідних даних. Підтримка «даних Amazon» не гарантує, що кожен ендпоінт однаково добре обробляє варіанти, пропозиції продавців, ZIP-коди доставки та відгуки.

Вимірюйте придатні результати, час відгуку та загальну вартість

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

Використовуйте одне й те саме визначення для всіх провайдерів:

Частка придатних результатів = запитані спостереження, що відповідають вашим критеріям прийняття ÷ загальна кількість запитаних спостережень × 100

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

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

Вимірюйте час до отримання придатних даних, включаючи повторні спроби й асинхронний опитування. Для більших тестів порівнюйте типовий час відгуку з повільнішими запитами, а не покладайтеся лише на середнє значення.

Розраховуйте вартість за тим самим принципом:

Вартість одного придатного спостереження = загальна вартість тестування ÷ кількість придатних спостережень

Враховуйте оплачувані повторні запити, витрати на рендеринг, функції геолокації та інші обов'язкові доповнення. Для регулярних завдань також враховуйте мінімальні суми підписки та трудовитрати на очищення або виправлення вихідних даних.

Протестуйте репрезентативну вибірку перед масштабуванням

Почніть приблизно з 20 URL товарів із трьох-чотирьох категорій, що охоплюють різні варіанти та кілька товарів, позначених як недоступні. Запустіть кожен для двох поштових індексів доставки — це дасть керований перший тест приблизно з 40 спостережень.

Зберігайте вхідні дані та налаштування однаковими для всіх провайдерів, збирайте дані в короткий проміжок часу та фіксуйте будь-які зміни на вихідних сторінках, які можуть вплинути на порівняння. Перевірте кожен запис у цій початковій вибірці, перш ніж запроваджувати регулярний розклад.

Використовуйте цю таблицю для документування результатів:

Вимога

Тест

Результат

Обмеження

Обов'язкові поля товару

Перевірте кожен запис на відповідність узгодженому списку полів

Зафіксуйте кількість повних спостережень із загальної кількості

Відзначте поля, які відсутні або заповнені непослідовно.

Правильний варіант

Порівняйте повернений дочірній ASIN та атрибути із запитаним варіантом

Зафіксуйте збіги та невідповідності

Відзначте редиректи або нерозв'язані вибори варіантів.

Контроль місцезнаходження доставки

Запитайте два поштових індекси та перевірте спостережуваний контекст доставки

Зафіксуйте перевірені збіги місцезнаходження

Вкажіть, коли повертається лише запитаний поштовий індекс.

Недоступні товари

Перевірте, чи визначаються недоступні товари без вигадування цін

Зафіксуйте точні статуси

Розрізняйте недоступність джерела та помилку вилучення.

Підтримка відгуків

Протестуйте окреме невелике завдання зі збору відгуків із заданими фільтрами та пагінацією

Зафіксуйте унікальні придатні відгуки

Задокументуйте обмеження доступу та невідоме охоплення.

Актуальність

Перевірте часові мітки збору та задокументовану поведінку кешу

Зафіксуйте актуальність відповідно до ваших вимог

Відзначте часові мітки, які вказують лише на час відповіді.

Час відгуку

Вимірюйте час від надсилання запиту до отримання готових даних, включаючи повторні спроби

Фіксуйте типовий і максимальний час

Невелика вибірка не доводить продуктивність при масштабуванні.

Загальна вартість

Зіставте виставлені рахунки з кількістю придатних спостережень

Фіксуйте вартість одного придатного спостереження

Враховуйте обов'язкові доповнення та мінімальні суми підписки.

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

Використання коду з GitHub для вашого скрейпера Amazon

Пошук за запитом «how to scrape amazon product data github» може привести вас до готових скрейперів, інтеграцій з API та гайдів із зовсім різними вимогами. Перш ніж встановлювати репозиторій, з'ясуйте, що він робить локально, від яких сервісів залежить і чи відповідає його вивід вашому проєкту.

Перевірте, що саме надає репозиторій

Читайте README разом із кодом, який надсилає запити. Сама лише назва репозиторію не розповість, як працює збір даних.

Тип репозиторію

Що він надає

Що перевірити

Автономний скрейпер

Код, який отримує сторінки та витягує поля

Чи потрібно вам надавати проксі, залежності браузера або додаткову інфраструктуру

API-клієнт

Код, який взаємодіє з окремим сервісом

Необхідні облікові дані, підтримувані ендпоінти та вартість сервісу

Гайд

Приклад, що демонструє конкретну техніку

Які кроки налаштування, валідації та обробки помилок залишилися незавершеними

Приклад комерційного сервісу

Приклад коду, що показує, як використовувати продукт провайдера

Вимоги до акаунту, ліміти пробного періоду та платні залежності

Чому ваш скрейпер Amazon повертає заблоковані, порожні або неправильні результати

Коли скрейпер Amazon видає неочікуваний результат, перевірте відповідь, перш ніж змінювати налаштування підключення. Заблокований запит, відсутня пропозиція та зламаний селектор потребують різних рішень. Ротація IP не виправить парсер і не відновить адресу доставки, яку ніколи не застосовували.

Симптом

Що перевірити

Що робити далі

Сторінка відмови в доступі або сторінка з перевіркою

HTTP-статус, вміст повернутої сторінки, частота запитів і обмеження доступу

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

Успішна відповідь, але немає полів товару

Чи містить відповідь сторінку товару, неочікувану розмітку або контент, відсутній у вихідному HTML

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

Відсутня ціна

Наявність товару, обраний варіант, пропозиція продавця та селектор ціни

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

Неправильна інформація про доставку

Чи було застосовано ZIP-код і чи зберігся він під час навігації або зміни сесії

Перевірте відображену адресу доставки на сторінці товару. Повторно застосуйте та перевірте місцезнаходження, потім повторіть зачеплене спостереження.

Дублікати товарів або відгуків

Повторна пагінація, вхідні дані, що перетинаються, та обробка ідентифікаторів

Видаляйте дублікати в чергах запитів товарів за маркетплейсом та ASIN, а відгуків — за маркетплейсом та ID відгуку, якщо він доступний. Зберігайте навмисні спостереження з різних моментів часу або місцезнаходжень.

Різні результати між запусками

Час збору, обраний варіант, продавець, стан, адреса доставки та налаштування сесії

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

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

Парсинг даних про товари Amazon: найкращі практики та етичні рекомендації

Етичний скрейпинг починається з чіткої мети: яка інформація вам потрібна, як ви її отримаєте і що плануєте з нею робити далі. Якщо ви шукаєте «найкращі практики та етичні рекомендації з парсингу даних про товари Amazon», використовуйте наступні перевірки, щоб перетворити ці питання на конкретні рішення.

Вивчіть умови Amazon та передбачуване використання даних

Публічно доступний контент не надає автоматично необмеженого дозволу на збір, зберігання або публікацію. Умови використання Amazon регулюють інтелектуальний аналіз даних, роботів та аналогічні інструменти вилучення. Вивчіть умови, що застосовуються до вашого маркетплейсу та будь-якого API або сервісу даних, які ви використовуєте, перед початком збору.

Розглядайте збір та повторне використання окремо. Внутрішній аналіз цін, публікація фрагментів відгуків та поширення набору даних про товари представляють собою різні види використання матеріалу. Підтвердіть дозволи, що стосуються вашого проєкту, включаючи будь-які обмеження на зберігання, відображення або поширення. Підписка на скрейпинг або підключення через проксі самі по собі не надають прав на контент Amazon.

Зберігайте походження та документуйте обмеження

Інша людина повинна мати можливість зрозуміти, звідки взявся запис і що він представляє, не відновлюючи ваш скрейпер. Зберігайте вихідний URL, маркетплейс, ASIN, часову мітку збору, обраний варіант, продавця, а також запитаний і спостережуваний контекст доставки, де це доречно.

Додайте стислу примітку про збір із зазначенням:

  • Версії інструменту або коду та налаштувань збору.

  • Фільтрів, сортування, пагінації та умов зупинки.

  • Відсутніх полів, невдалих запитів та правил дедуплікації.

  • Чи були перевірені налаштування місцезнаходження і чи кешувалися результати.

  • Відомих прогалин у покритті, особливо для відгуків клієнтів.

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

🦔

Для індивідуального процесу вивчіть каталог проксі CyberYozh App і виберіть інфраструктуру з урахуванням цільових місцезнаходжень, необхідної тривалості сесії та очікуваного трафіку. Почніть із невеликої перевіреної задачі збору, перш ніж розширювати робоче навантаження.

FAQ по парсингу Amazon