Выиграй 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