В прошлые выходные я, честно говоря, почти полностью выхлебал целую кофейную турку, пока пытался четырьмя разными способами собрать данные со страницы Amazon Best Sellers. Два метода сработали отлично, один едва не довёл до бана IP, а один занял буквально два клика. Ниже — всё, что мне удалось выяснить.
Amazon — это настоящий гигант маркетплейса: , и система Best Sellers Rank (BSR), которая обновляется каждый час. Если ты занимаешься подбором товаров для FBA, анализом цен конкурентов или просто хочешь увидеть тренды раньше соперников, данные Best Sellers — это действительно золото.
Но как вытащить эти данные из Amazon и перенести их в таблицу? Вот тут и начинается самое интересное. Я проверил requests + BeautifulSoup, Selenium, scraping API и — наш AI web scraper без кода — чтобы понять, какой подход реально работает, а какой оставит тебя смотреть на страницу с CAPTCHA.
Что такое Amazon Best Sellers и зачем это нужно?
Amazon Best Sellers Rank (BSR) — это рейтинг Amazon в реальном времени, который ранжирует товары по объёму продаж внутри каждой категории. По сути, это как конкурс популярности, который обновляется каждый час на основе свежих и исторических данных о продажах. Сам Amazon описывает это так:
«Расчёт Amazon Best Sellers основан на продажах на Amazon и обновляется каждый час, чтобы отражать свежие и исторические продажи каждого товара, продаваемого на Amazon». —
Страница Best Sellers показывает топ-100 товаров в каждой категории, разбитый на две страницы по 50 позиций. На первой странице — места с #1 по #50, на второй — с #51 по #100. Amazon подтвердил, что просмотры страниц и отзывы покупателей НЕ влияют на BSR — учитываются только продажи.
Кому вообще нужны эти данные? Продавцам e-commerce, которые ищут товары для FBA, sales-командам, собирающим конкурентную аналитику, операционным командам, отслеживающим ценовые тренды, и market research-специалистам, которые следят за ростом категорий. По моему опыту, любой, кто продаёт на Amazon или конкурирует с ним, рано или поздно приходит к необходимости выгружать эти данные в таблицу.
Зачем собирать Amazon Best Sellers с помощью Python?
Ручной product research съедает кучу времени. Исследование показало, что сотрудники тратят 9,3 часа в неделю только на поиск и сбор информации. Для e-commerce-команд это означает часы, потраченные на переходы по страницам Amazon, копирование названий и цен товаров и вставку всего этого в таблицы — а потом весь процесс приходится повторять уже на следующей неделе.
Вот короткий обзор сценариев, где сбор Best Sellers действительно полезен:
| Сценарий | Что вы получаете | Кому это полезно |
|---|---|---|
| Подбор товаров для FBA | Выявление товаров с высоким спросом и низкой конкуренцией по BSR и числу отзывов | Продавцы Amazon, дропшипперы |
| Анализ цен конкурентов | Отслеживание изменения цен у топовых товаров в вашей категории | E-commerce-команды, аналитики цен |
| Мониторинг рыночных трендов | Выявление растущих категорий и сезонных колебаний | Product-менеджеры, market research-специалисты |
| Генерация лидов | Сбор списков самых продаваемых брендов и их продуктовых линеек | Sales-команды, B2B outreach |
| Анализ конкурентов | Сравнение ваших товаров с лидерами категории | Бренд-менеджеры, стратегические команды |
Польза вполне измерима: опрос среди 2700 специалистов в сфере commerce показал, что AI-инструменты экономят e-commerce-специалистам в среднем . А продавцы, использующие автоматический мониторинг цен, удерживают Buy Box против 42% у тех, кто отслеживает цены вручную — это рост продаж на 37%, обеспеченный более быстрой реакцией на изменения цен.
4 способа собрать Amazon Best Sellers с Python: краткое сравнение
Прежде чем переходить к пошаговым инструкциям, вот сравнение в лоб, которого мне самому не хватало в начале тестов. Эта таблица поможет выбрать подходящий метод под твою задачу:
| Критерий | requests + BS4 | Selenium | Scraping API (например, Scrape.do) | Thunderbit (без кода) |
|---|---|---|---|---|
| Сложность настройки | Средняя | Высокая (драйвер, браузер) | Низкая (API key) | Очень низкая (расширение Chrome) |
| Умеет работать с lazy loading | Нет | Да (имитация прокрутки) | Да (рендеренный HTML) | Да (AI обрабатывает рендеринг) |
| Устойчивость к антибот-защите | Низкая (бан IP) | Средняя (обнаруживается) | Высокая (ротация прокси) | Высокая (cloud + browser modes) |
| Поддержка и обслуживание | Высокие затраты (ломаются селекторы) | Высокие (обновления драйвера + селекторы) | Низкие | Очень низкие (AI адаптируется к изменениям интерфейса) |
| Стоимость | Бесплатно | Бесплатно | Платно (за запрос) | Бесплатный тариф + платные планы |
| Лучше всего подходит для | Разовых сборов, обучения | Страниц с большим количеством JS, страниц с логином | Масштабирования / продакшена | Непрограммистов, быстрого ресёрча, регулярного мониторинга |
Если хочешь освоить основы Python scraping, начни с метода 1 или 2. Если нужна надёжность на продакшн-уровне — выбирай метод 3. Если хочется получить результат в два клика и без кода — сразу переходи к методу 4.
Перед началом
- Сложность: от начинающего до среднего уровня (зависит от метода)
- Время: около 15 минут для Thunderbit, около 45 минут для Python-методов
- Что понадобится: Python 3.8+ (для методов 1–3), браузер Chrome, (для метода 4) и URL категории Amazon Best Sellers, с которой ты будешь работать
Метод 1: собираем Amazon Best Sellers через requests + BeautifulSoup
Это лёгкий и дружелюбный для новичка подход — без автоматизации браузера, только HTTP-запросы и парсинг HTML. Заодно именно он больше всего научил меня тому, как Amazon защищается от скрапинга.
Шаг 1: подготовьте окружение
Установите нужные пакеты:
1pip install requests beautifulsoup4 pandas
Затем добавьте импорты:
1import requests
2from bs4 import BeautifulSoup
3import pandas as pd
4import random
5import time
Шаг 2: отправьте запрос с реалистичными заголовками
Amazon блокирует запросы, которые выглядят как бот. Самая базовая защита — это заголовок User-Agent, похожий на обычный браузер. Вот пример с набором актуальных и правдоподобных User-Agent строк (источник: , март 2026):
1USER_AGENTS = [
2 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
3 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
4 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
5 "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
6 "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
7]
8headers = {"User-Agent": random.choice(USER_AGENTS)}
9url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
10response = requests.get(url, headers=headers)
11print(response.status_code) # Должно быть 200
Если видишь статус 200 — всё хорошо. Если получаешь 503 или тебя перекидывает на страницу CAPTCHA, значит Amazon пометил запрос как подозрительный.
Шаг 3: распарсите данные о товарах с помощью BeautifulSoup
Открой HTML-структуру страницы Amazon в DevTools браузера (правый клик → Inspect). Контейнеры товаров используют ID gridItemRoot. Внутри каждого блока находятся название товара, цена, рейтинг и URL.
1soup = BeautifulSoup(response.text, "html.parser")
2products = []
3for item in soup.find_all("div", id="gridItemRoot"):
4 title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
5 price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
6 link_tag = item.find("a", class_="a-link-normal")
7 title = title_tag.get_text(strip=True) if title_tag else "N/A"
8 price = price_tag.get_text(strip=True) if price_tag else "N/A"
9 url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
10 products.append({"Title": title, "Price": price, "URL": url})
Внимание: классы с префиксом
_cDEzb_— это CSS module hash-имена, которые Amazon периодически пересоздаёт. IDgridItemRootи классa-link-normalстабильнее, но перед запуском скрапера всегда проверяй селекторы в DevTools.
Шаг 4: экспортируйте в CSV
1df = pd.DataFrame(products)
2df.to_csv("amazon_best_sellers.csv", index=False)
3print(f"Собрано {len(products)} товаров")
Чего ожидать — и что может пойти не так
В моём тесте этот метод вернул около 30 товаров вместо 50. Это не ошибка кода — это lazy loading у Amazon. При первой загрузке страницы рендерится только около 30 товаров; остальные появляются после прокрутки, а для этого нужен JavaScript, с которым requests работать не умеет.
Другие ограничения:
- без ротации прокси блокировка IP происходит довольно быстро (меня заблокировали примерно после 15 запросов подряд)
- CSS-селекторы ломаются, когда Amazon меняет вёрстку — а делает он это регулярно
- из коробки нет обработки пагинации
Для изучения Python scraping этот способ отличный. Для продакшена — слишком хрупкий.
Метод 2: собираем Amazon Best Sellers через Selenium
Selenium решает проблему lazy loading за счёт запуска настоящего браузера — настройка тяжелее, но зато он захватывает все 50 товаров на странице.
Шаг 1: установите Selenium
1pip install selenium pandas
Хорошая новость: начиная с Selenium 4.6+, webdriver-manager больше не нужен. Selenium Manager автоматически скачивает драйверы.
1from selenium import webdriver
2from selenium.webdriver.chrome.options import Options
3from selenium.webdriver.common.by import By
4from selenium.webdriver.common.keys import Keys
5import time
6import pandas as pd
7options = Options()
8options.add_argument("--headless=new")
9options.add_argument("--window-size=1920,1080")
10options.add_argument("--disable-blink-features=AutomationControlled")
11driver = webdriver.Chrome(options=options)
Флаг --headless=new (появился в Chrome 109+) использует тот же пайплайн рендеринга, что и обычный Chrome с интерфейсом, поэтому Amazonу сложнее определить автоматизацию.
Шаг 2: прокрутите страницу, чтобы обойти lazy loading
Именно это делает Selenium оправданным, несмотря на более сложную настройку. На Amazon Best Sellers сначала загружается только около 30 товаров, а остальные появляются после прокрутки.
1def scroll_page(driver, scrolls=5, delay=2):
2 for _ in range(scrolls):
3 driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
4 time.sleep(delay)
5driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
6time.sleep(3)
7scroll_page(driver)
После прокрутки все 50 товаров должны оказаться в DOM. У меня 5 прокруток Page Down с задержкой 2 секунды оказались достаточными, но в зависимости от скорости соединения параметры могут потребовать настройки.
Шаг 3: извлеките данные о товарах
1items = driver.find_elements(By.ID, "gridItemRoot")
2products = []
3for item in items:
4 try:
5 title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
6 except:
7 title = "N/A"
8 try:
9 price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
10 except:
11 price = "N/A"
12 try:
13 url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
14 except:
15 url = "N/A"
16 products.append({"Title": title, "Price": price, "URL": url})
Оборачивать каждое извлечение в try/except очень важно — у части товаров может не быть нужных полей, либо они могут отсутствовать в наличии, и ты не хочешь, чтобы одна проблемная карточка завалила весь процесс.
Шаг 4: обработайте пагинацию
Amazon делит 100 Best Sellers на две страницы с разными URL:
1urls = [
2 "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
3 "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
4]
5all_products = []
6for url in urls:
7 driver.get(url)
8 time.sleep(3)
9 scroll_page(driver)
10 # ... извлеките товары как выше ...
11 all_products.extend(products)
12driver.quit()
Чего ожидать
В моём тесте Selenium собрал все 50 товаров на каждой странице — явная победа над requests + BS4. Минус в том, что на одну страницу уходило около 45 секунд (включая задержки на прокрутку), и меня всё равно пометили после слишком большого числа запусков без ротации прокси. Кроме того, Amazon может обнаружить Selenium даже с антидетект-флагами — для серьёзного масштаба понадобятся дополнительные меры (см. Anti-Ban Playbook ниже).
Другие проблемы:
- несоответствие версий WebDriver всё ещё иногда случается, хотя Selenium Manager заметно сократил эту проблему
- селекторы приходится обновлять каждый раз, когда Amazon меняет DOM
- высокое потребление памяти — каждый экземпляр браузера съедает 200–400 МБ RAM
Метод 3: собираем Amazon Best Sellers через scraping API
Scraping API — это подход в стиле «пусть кто-то другой разбирается со сложностями». Сервисы вроде Scrape.do, Oxylabs и ScrapingBee берут на себя ротацию прокси, рендеринг JavaScript и антибот-защиту — ты просто отправляешь URL и получаешь HTML или JSON.
Как это работает
Ты отправляешь целевой URL в endpoint API. Сервис рендерит страницу в реальном браузере на своей инфраструктуре, ротирует прокси, обходит CAPTCHA и возвращает чистый HTML. Затем ты парсишь полученный HTML через BeautifulSoup, как обычно.
Шаг 1: отправьте запрос через API
Вот пример с Scrape.do (цены начинаются от $29/месяц за 150 000 кредитов, 1 кредит = 1 запрос независимо от рендеринга):
1import requests
2from bs4 import BeautifulSoup
3api_token = "YOUR_API_TOKEN"
4target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
5api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
6response = requests.get(api_url)
7soup = BeautifulSoup(response.text, "html.parser")
Дальше парсинг полностью совпадает с методом 1 — те же селекторы, та же логика извлечения.
Реальность цен
Вот сколько берут основные API за 1000 запросов к Amazon по лучшему доступному тарифу:
| Провайдер | Стоимость за 1000 запросов | Примечания |
|---|---|---|
| Scrape.do | ~$0.19 | Фиксированная ставка, без мультипликаторов по кредитам |
| Oxylabs | ~$1.80 | Множитель x5 для JS-рендеринга |
| ScrapingBee | ~$4.90 | Множители x5–x25 для премиум-функций |
| Bright Data | ~$5.00+ | Самые полные данные (686 полей на товар), но самая низкая скорость (~66 сек/запрос) |
Плюсы и минусы
Плюсы: высокая надёжность ( у ведущих провайдеров на Amazon), не нужно обслуживать драйверы, антибот-защита обрабатывается автоматически, хорошо масштабируется.
Минусы: оплата за каждый запрос (на масштабе это быстро становится дорогим), всё равно нужно писать код для парсинга, и всё ещё возможны поломки из-за изменений CSS-селекторов. Для 100 000 страниц в месяц разница по полной стоимости владения впечатляет: собственная разработка обойдётся примерно в — экономия 71%.
Точка безубыточности обычно находится в диапазоне 500K–1M запросов в месяц. Ниже этого уровня экономия времени от API обычно намного важнее затрат.
Метод 4: собираем Amazon Best Sellers с помощью Thunderbit (Python не нужен)
Сразу скажу честно: я работаю в Thunderbit, поэтому воспринимай этот раздел с учётом этого контекста. Но я действительно протестировал все четыре метода подряд, и разница во времени до получения данных была очень заметной.
— это AI web scraper в формате расширения Chrome. Идея простая: вместо написания CSS-селекторов или Python-кода AI сам читает страницу и понимает, какие данные нужно извлечь. Для Amazon Best Sellers у Thunderbit уже есть готовые шаблоны, которые работают в один клик.
Шаг 1: установите расширение Thunderbit для Chrome
Перейдите в и нажмите «Add to Chrome». Зарегистрируй бесплатный аккаунт — на бесплатном тарифе достаточно кредитов, чтобы всё протестировать.
Шаг 2: откройте страницу Amazon Best Sellers
Открой любую категорию Amazon Best Sellers в Chrome. Например:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
Шаг 3: нажмите «AI Suggest Fields»
Открой боковую панель Thunderbit и нажми «AI Suggest Fields». AI проанализирует структуру страницы и предложит колонки: название товара, цена, рейтинг, URL изображения, продавец, URL товара и позиция в рейтинге. В моём тесте он корректно определил все нужные поля примерно за 3 секунды.

Ты можешь переименовывать, удалять и добавлять колонки. Можно даже задать собственные AI-подсказки для каждого поля — например, «классифицируй как Electronics/Apparel/Home», чтобы добавить каждому товару категорию.
Шаг 4: нажмите «Scrape»
Нажми кнопку «Scrape». Thunderbit заполнит структурированную таблицу всеми данными о товарах со страницы. В cloud mode он может обрабатывать до 50 страниц одновременно параллельно, автоматически решая вопросы lazy loading и пагинации.
Шаг 5: экспортируйте бесплатно
Нажми «Export» и выбери нужное место назначения: Excel, Google Sheets, Airtable или Notion. Экспорт бесплатен на всех тарифах — без скрытых платежей.

Весь процесс занял у меня примерно 90 секунд — от открытия страницы до готовой таблицы. Для сравнения: метод 1 занял около 20 минут (включая отладку lazy loading), метод 2 — примерно 35 минут (включая настройку Selenium), а метод 3 — около 15 минут (включая создание аккаунта в API).
Почему Thunderbit хорошо работает с Amazon
Поскольку AI каждый раз заново читает страницу, он автоматически адаптируется к изменениям вёрстки — поддерживать CSS-селекторы не нужно. Это напрямую решает самую частую проблему, о которой пишут на форумах по scraping: «Обычного web scraper недостаточно, нужно слишком много костылей на случай изменений элементов». Когда Amazon меняет DOM, а происходит это регулярно, тебе ничего не нужно обновлять.
Cloud scraping mode прозрачно берёт на себя ротацию прокси, рендеринг и антибот-защиту. Для тех, кому нужен подход «просто работает», это убирает всю головную боль с банами.
План против бана: как не получить блокировку от Amazon
У Amazon агрессивная антибот-система. Во время тестов меня временно блокировали по IP, и пользователи на форумах пишут о том же: «ошибки повсюду, Amazon даже начал перекидывать меня на главную страницу». Если ты идёшь по Python-пути (методы 1–3), этот раздел критически важен.
Вот многоуровневая стратегия — от базовой к продвинутой:
1. Меняйте User-Agent
Если один и тот же User-Agent отправляется снова и снова, это выглядит подозрительно. Используйте набор из 5+ строк из примера в методе 1 и случайным образом выбирайте одну на каждый запрос:
1headers = {"User-Agent": random.choice(USER_AGENTS)}
2. Добавляйте случайные задержки между запросами
Фиксированные паузы легко заметить по шаблону поведения. Случайные задержки безопаснее:
1time.sleep(random.uniform(2, 5))
Я заметил, что интервал 2–5 секунд между запросами позволял не привлекать внимание на небольших пакетах (до 50 запросов). Для больших объёмов лучше увеличить до 3–7 секунд.
3. Используйте ротацию прокси
Это главный фактор. показывают, что residential proxies в среднем дают около 94% успеха на Amazon против примерно 59% у datacenter-прокси — разница в 35 процентных пунктов. Система обнаружения Amazon использует TLS fingerprinting, поведенческий анализ и ограничение частоты по IP, поэтому стандартные датацентровые IP помечаются за считанные секунды.
Residential-прокси дороже ($2–$12 за GB в зависимости от провайдера), но намного надёжнее. Пример кода:
1proxies = {
2 "http": "http://user:pass@residential-proxy.example.com:8080",
3 "https": "http://user:pass@residential-proxy.example.com:8080"
4}
5response = requests.get(url, headers=headers, proxies=proxies)
4. Усильте browser fingerprint в Selenium
1options.add_argument('--disable-blink-features=AutomationControlled')
2options.add_experimental_option("excludeSwitches", ["enable-automation"])
3options.add_experimental_option('useAutomationExtension', False)
4# После инициализации драйвера уберите флаг navigator.webdriver
5driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
6 'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
7})
5. Управляйте сессиями и cookies
Если сохранять cookies между запросами, скрапер выглядит более похоже на обычную пользовательскую сессию:
1session = requests.Session()
2# Сначала зайдите на главную, чтобы получить реалистичные cookies
3session.get("https://www.amazon.com", headers=headers)
4time.sleep(2)
5# Затем переходите к нужной странице
6response = session.get(target_url, headers=headers)
6. Когда лучше вообще не усложнять себе жизнь
Если ты не хочешь управлять всем этим вручную, cloud scraping в Thunderbit берёт на себя ротацию прокси, рендеринг и антибот-защиту прозрачно. Scraping API тоже закрывают большую часть этих задач из коробки. По моему опыту, время, потраченное на разбор антибан-проблем, часто превышает время написания самого скрапинга — так что вариант «просто работает» действительно окупается.
Обогащение данных со страниц товара: как собрать больше информации
На странице Best Sellers есть только базовые данные: название, цена, рейтинг, позиция. Но настоящая ценность для FBA-аналитики находится на индивидуальных страницах товаров. Вот чего тебе не хватает, если собирать только листинг:
| Поле | Страница листинга | Страница товара |
|---|---|---|
| Название товара | ✅ | ✅ |
| Цена | ✅ | ✅ |
| Рейтинг | ✅ | ✅ |
| BSR Rank | ✅ | ✅ (включая подкатегории) |
| Бренд | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| Дата первого появления | ❌ | ✅ |
| Размеры / вес | ❌ | ✅ |
| Количество продавцов | ❌ | ✅ |
| Характеристики в буллетах | ❌ | ✅ |
| Владелец Buy Box | ❌ | ✅ |
Поле «Дата первого появления» особенно полезно — оно показывает, как давно товар находится на рынке, а это важный сигнал для конкурентного анализа. А знание числа продавцов и владельца Buy Box помогает понять, стоит ли вообще заходить в эту нишу (если сам Amazon удерживает более 30% доли Buy Box, конкурировать становится крайне сложно).
Подход на Python: цикл по URL товаров
После того как ты собрал URL товаров со страницы листинга, проходи по каждому из них с задержкой:
1for product in products:
2 time.sleep(random.uniform(3, 6))
3 detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
4 detail_soup = BeautifulSoup(detail_response.text, "html.parser")
5 # Извлечение бренда
6 brand_tag = detail_soup.find("a", id="bylineInfo")
7 product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
8 # Извлечение ASIN из исходного кода или URL
9 # Извлечение Date First Available из таблицы характеристик товара
10 # ... дополнительные поля ...
Предупреждаю: переход по 100 отдельным страницам товаров значительно повышает риск бана. Закладывай ротацию прокси и более длинные задержки.
Подход Thunderbit: сбор подстраниц в один клик
После того как ты собрал листинг в таблицу, нажми в Thunderbit «Scrape Subpages». AI пройдёт по каждому URL товара и автоматически дополнит таблицу новыми колонками — бренд, ASIN, характеристики, особенности и т. д. Никакого дополнительного кода, селекторов или настройки. Это особенно удобно для e-commerce-команд, которым нужна полная картина для закупочных решений, но не хочется писать и поддерживать парсер страниц товара.
Как автоматизировать регулярный сбор: следите за Best Sellers во времени
Разовый сбор данных полезен, но настоящая конкурентная ценность появляется при постоянном мониторинге. Отслеживание того, какие товары растут и падают, раннее замечание трендов и контроль ценовых изменений неделями или месяцами — вот что отличает случайный ресёрч от решений на основе данных.
Подход на Python: планирование через cron
На Linux/Mac ты можешь запускать Python-скрипт по расписанию через cron. Вот запись в crontab для ежедневного запуска в 8 утра:
10 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Для еженедельного запуска по понедельникам в 9 утра:
10 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
На Windows для этого можно использовать Task Scheduler. Если нужен постоянный запуск без необходимости держать включённым ноутбук, разверни скрипт на VPS или AWS Lambda — хотя это добавляет инфраструктурной сложности.
Добавь логирование и уведомления об ошибках, чтобы быстро замечать сбои. Нет ничего хуже, чем понять через две недели, что скрапер тихо сломался.
Подход Thunderbit: Scheduled Scraper человеческим языком
В Thunderbit Scheduled Scraper позволяет описать интервал обычным языком — напиши «каждый понедельник в 9 утра» или «каждый день в 8 утра», и AI поймёт расписание. Сбор выполняется на облачных серверах Thunderbit (не нужно держать включённым браузер или компьютер), а данные автоматически экспортируются в Google Sheets или Airtable. Так получается живой мониторинговый дашборд без управления серверами — отличный вариант для операционных команд, которым нужна постоянная видимость без DevOps-головной боли.
Юридические и этические аспекты при сборе данных с Amazon
Я не юрист, и это не юридическая консультация. Но игнорировать правовую сторону в материале про scraping было бы безответственно — пользователи на форумах прямо поднимают вопрос условий использования, и не без причины.
robots.txt Amazon: по состоянию на 2026 год в robots.txt Amazon есть 80+ конкретных Disallow-путей, но /gp/bestsellers/ явно не заблокирован для стандартных user-agent. Однако 35+ AI-ориентированных user-agent (ClaudeBot, GPTBot, Scrapy и др.) получают общий Disallow: /. Отсутствие отдельного запрета не означает, что Amazon одобряет scraping.
Условия использования Amazon: Amazon (обновлены в мае 2025) прямо запрещают «использовать любые автоматизированные процессы или технологии для доступа, получения, копирования или мониторинга любой части Amazon Website» без письменного разрешения. Это не теория — в ноябре 2025 Amazon за несанкционированный автоматизированный доступ и добился предварительного судебного запрета.
Прецедент hiQ v. LinkedIn: в деле (9-й округ, 2022) суд постановил, что сбор общедоступных данных, вероятно, не нарушает Computer Fraud and Abuse Act. Но hiQ в итоге заключила мировое соглашение и согласилась прекратить scraping — выигрыш по CFAA не защищает от претензий по нарушению договора.
Практические рекомендации:
- собирай только общедоступные данные (цены, BSR, названия товаров — не PII)
- соблюдай лимиты запросов и не перегружай серверы
- используй данные для легитимной конкурентной аналитики
- проконсультируйся со своим юристом перед масштабным сбором
- учитывай, что уже приняли комплексное законодательство о конфиденциальности
Cloud scraping в Thunderbit использует стандартные browser-like request patterns, но тебе всё равно стоит отдельно проверить соответствие требованиям вместе со своим юристом.
Какой метод выбрать? Краткий гид по принятию решения
Коротко:
- «Я учу Python и хочу проект на выходные». → Метод 1 (requests + BeautifulSoup). Ты многому научишься: HTTP-запросам, HTML-парсингу и антибот-защите Amazon.
- «Мне нужно собирать страницы с большим количеством JavaScript или сессии после логина». → Метод 2 (Selenium). Он тяжелее, но работает с динамическим контентом.
- «Я запускаю продакшн-сбор на масштабе». → Метод 3 (Scraping API). Пусть кто-то другой управляет прокси и рендерингом. По API выгоднее ниже 500K запросов в месяц.
- «Я не разработчик и хочу получить данные за 2 минуты». → Метод 4 (). Без кода, без селекторов, без обслуживания.
- «Мне нужен постоянный мониторинг без управления серверами». → Thunderbit Scheduled Scraper. Настроил и забыл.
Выводы и ключевые наблюдения
После уикенда тестов вот что действительно оказалось важным:
requests + BeautifulSoup отлично подходит для обучения, но ограничение lazy loading (только ~30 из 50 товаров) и хрупкие CSS-селекторы делают его неудобным для продакшена.
Selenium решает проблему lazy loading и собирает все 50 товаров на странице, но работает медленно, потребляет много памяти и всё равно распознаётся антибот-системами Amazon.
Scraping API дают лучшую надёжность для промышленного сбора — на Amazon — но стоимость растёт, и код парсинга всё равно придётся писать.
Thunderbit показал самый быстрый путь от страницы до данных с большим отрывом. AI сам справляется с изменениями вёрстки, lazy loading, пагинацией и антибот-защитой без какой-либо настройки. Для нетехнических пользователей и команд, которым нужны регулярные данные без DevOps-нагрузки, это самый практичный вариант.
Главный урок? Из-за агрессивной антибот-защиты Amazon и постоянных изменений вёрстки решения без обслуживания экономят больше всего времени в долгосрочной перспективе. Каждый час, потраченный на отладку сломанных селекторов и ротацию прокси, — это час, не потраченный на реальный анализ.
Хочешь попробовать подход без кода? Бесплатный тариф даёт достаточно кредитов, чтобы собрать несколько категорий Best Sellers и увидеть результат своими глазами. Предпочитаешь Python? Примеры кода выше помогут начать. В любом случае у тебя будут данные Amazon Best Sellers в таблице, а не открытая вкладка браузера.
Чтобы узнать больше о подходах к web scraping, посмотри наши гайды по , и . Также можно посмотреть пошаговые разборы на .
Узнать больше