Как парсить Amazon Best Sellers: 4 способа с Python и без кода

Последнее обновление: August 21, 2026
Как парсить Amazon Best Sellers: 4 способа с Python и без кода

В прошлые выходные я буквально вылил на себя целый чайник кофе, пока тестировал четыре разных способа собрать данные со страницы Amazon Best Sellers. Два варианта отработали на ура, один почти довёл до блокировки IP, а один занял буквально один клик. Делюсь всем, что удалось выяснить.

Amazon — это настоящий гигант: 600 млн товарных карточек, 310+ млн активных аккаунтов покупателей и система Best Sellers Rank (BSR), которая обновляется каждый час. Если ты занимаешься аналитикой товаров для FBA, следишь за ценами конкурентов или просто хочешь замечать тренды раньше остальных, данные Best Sellers — это просто золото.

Но как вытащить эти данные из Amazon в таблицу? Вот тут и начинается самое интересное. Я протестировал requests + BeautifulSoup, Selenium, scraping API и Thunderbit — наш AI web scraper без кода — чтобы понять, какой подход реально работает, а какой оставит тебя пялиться на страницу CAPTCHA.

Что такое Amazon Best Sellers и зачем это вообще нужно?

Amazon Best Sellers Rank (BSR) — это онлайн-таблица лидеров Amazon, которая ранжирует товары по объёму продаж внутри каждой категории. По сути, это рейтинг популярности, который обновляется каждый час и учитывает как недавние, так и исторические продажи. Сам Amazon объясняет это так:

"The Amazon Best Sellers calculation is based on Amazon sales and is updated hourly to reflect recent and historical sales of every item sold on Amazon." — Amazon Seller Central

Страница Best Sellers показывает топ-100 товаров в категории, разбитый на две страницы по 50 позиций. На первой странице — места с #1 по #50, на второй — с #51 по #100. Amazon подтвердил, что просмотры страниц и отзывы покупателей НЕ влияют на BSR — рейтинг строится исключительно на продажах.

Кому это нужно? Продавцам e-commerce, которые ищут товары для FBA, sales-командам, строящим конкурентную аналитику, операционным командам, отслеживающим ценовые тренды, и исследователям рынка, изучающим рост категорий. По моему опыту, любой, кто продаёт на Amazon или конкурирует с ним, рано или поздно приходит к необходимости выгружать эти данные в таблицу.

Зачем парсить Amazon Best Sellers с помощью Python?

Ручной сбор товарных данных — это колоссальная трата времени. Исследование McKinsey показало, что сотрудники тратят в среднем 9,3 часа в неделю только на поиск и сбор информации. Для e-commerce-команд это выливается в часы, потраченные на переходы по страницам Amazon, копирование названий и цен, вставку их в таблицы — и всё это приходится повторять на следующей неделе.

Вот краткий обзор сценариев, ради которых парсинг Best Sellers действительно стоит усилий:

СценарийЧто вы получитеКому это полезно
Анализ товаров для FBAНаходить товары с высоким спросом и низкой конкуренцией по BSR и числу отзывовПродавцам Amazon, дропшипперам
Анализ цен конкурентовОтслеживать изменения цен у топовых товаров в вашей категорииE-commerce-командам, аналитикам цен
Мониторинг рыночных трендовЗамечать растущие категории и сезонные измененияПродакт-менеджерам, исследователям рынка
ЛидогенерацияСобрать списки самых продаваемых брендов и их линеекSales-командам, B2B-отделам
Анализ конкурентовСравнивать свои товары с лидерами категорииБренд-менеджерам, стратегиям

Экономический эффект вполне реальный: опрос Salesforce среди 2 700 специалистов в e-commerce показал, что AI-инструменты экономят в среднем 6,4 часа в неделю. А продавцы, использующие автоматический мониторинг цен, удерживают Buy Box 67% времени против 42% у тех, кто делает это вручную — это даёт 37% роста продаж за счёт более быстрой реакции на изменение цен.

4 способа парсить Amazon Best Sellers с помощью Python: краткое сравнение

Прежде чем переходить к пошаговым инструкциям, вот сравнение, которого мне самому сильно не хватало в начале тестов. Эта таблица поможет выбрать подход под твою задачу:

Критерийrequests + BS4SeleniumScraping API (например, Scrape.do)Thunderbit (без кода)
Сложность настройкиСредняяВысокая (драйвер, браузер)Низкая (API key)Очень низкая (расширение Chrome)
Работает с lazy loadingНетДа (симуляция прокрутки)Да (отрендеренный HTML)Да (AI обрабатывает рендеринг)
Устойчивость к антибот-защитеНизкая (блокировки IP)Средняя (можно обнаружить)Высокая (ротация прокси)Высокая (cloud + browser mode)
Объём обслуживанияВысокий (ломаются селекторы)Высокий (обновления драйвера + селекторы)НизкийОчень низкий (AI подстраивается под изменения)
СтоимостьБесплатноБесплатноПлатно (за запрос)Бесплатный тариф + платные планы
Лучше всего подходит дляРазовых парсингов, обученияJS-тяжёлых страниц, страниц с логиномМасштаба / productionНе-разработчиков, быстрого анализа, регулярного мониторинга

Если хочешь освоить основы Python-парсинга, начни со способа 1 или 2. Если нужна надёжность на уровне production, бери способ 3. Если нужен результат в один клик без написания кода, сразу переходи к способу 4.

Перед началом

  • Сложность: от начального до среднего уровня (в зависимости от способа)
  • Время: около 15 минут для Thunderbit, около 45 минут для Python-способов
  • Что понадобится: Python 3.8+ (для способов 1–3), браузер Chrome, расширение Thunderbit для Chrome (для способа 4) и URL нужной категории Amazon Best Sellers

Способ 1: парсинг Amazon Best Sellers через requests + BeautifulSoup

Это лёгкий и дружелюбный к новичкам вариант — без автоматизации браузера, только HTTP-запросы и разбор HTML. Именно он больше всего научил меня тому, как Amazon защищается от парсинга.

Шаг 1: подготовьте окружение

Установите нужные библиотеки:

pip install requests beautifulsoup4 pandas

Затем импортируйте их:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time

Шаг 2: отправьте запрос с реалистичными заголовками

Amazon блокирует запросы, которые выглядят как бот. Самая базовая защита — заголовок User-Agent, имитирующий реальный браузер. Вот пример с набором актуальных, правдоподобных User-Agent строк (источник — Geekflare, март 2026):

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "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",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
    "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",
]

headers = {"User-Agent": random.choice(USER_AGENTS)}
url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
response = requests.get(url, headers=headers)
print(response.status_code)  # Should be 200

Если видишь статус 200 — всё нормально. Если получаешь 503 или тебя редиректит на CAPTCHA, Amazon распознал запрос как подозрительный.

Шаг 3: извлеките данные с помощью BeautifulSoup

Открой HTML страницы Amazon в DevTools браузера (правый клик → Inspect). Контейнеры товаров используют ID gridItemRoot. Внутри каждого контейнера находятся название товара, цена, рейтинг и ссылка.

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

for item in soup.find_all("div", id="gridItemRoot"):
    title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
    price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
    link_tag = item.find("a", class_="a-link-normal")
    
    title = title_tag.get_text(strip=True) if title_tag else "N/A"
    price = price_tag.get_text(strip=True) if price_tag else "N/A"
    url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

Важно: классы вида _cDEzb_ — это CSS module hash-имена, которые Amazon периодически пересоздаёт. ID gridItemRoot и класс a-link-normal стабильнее, но перед запуском всё равно проверяй селекторы через DevTools.

Шаг 4: экспортируйте в CSV

df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Scraped {len(products)} products")

Что ожидать и что идёт не так

В моём тесте этот способ вернул около 30 товаров вместо 50. Это не ошибка в коде — это lazy loading на стороне Amazon. На первой загрузке страницы рендерится только примерно 30 товаров; остальные появляются после прокрутки, а для этого нужен JavaScript, с которым requests не справляется.

Другие ограничения:

  • без ротации прокси блокировки IP происходят очень быстро (меня заблокировали примерно после 15 запросов подряд)
  • CSS-селекторы ломаются, когда Amazon меняет верстку, а делает он это регулярно
  • нет готовой обработки пагинации

Для обучения Python-парсингу этот вариант отличный. Для production — слишком хрупкий.

Способ 2: парсинг Amazon Best Sellers через Selenium

Selenium решает проблему lazy loading, потому что запускает настоящий браузер. Настройка тяжелее, но зато он может собрать все 50 товаров на странице.

Шаг 1: установите Selenium

pip install selenium pandas

Хорошая новость: начиная с Selenium 4.6+ тебе больше не нужен webdriver-manager. Selenium Manager автоматически управляет загрузкой драйверов.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(options=options)

Флаг --headless=new (появился в Chrome 109+) использует тот же пайплайн рендеринга, что и обычный Chrome, и это усложняет обнаружение со стороны Amazon.

Шаг 2: прокрутите страницу, чтобы подгрузить контент

Именно этот шаг и делает Selenium оправданным. Amazon Best Sellers сначала загружает только примерно 30 товаров — остальные появляются после прокрутки.

def scroll_page(driver, scrolls=5, delay=2):
    for _ in range(scrolls):
        driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
        time.sleep(delay)

driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
time.sleep(3)
scroll_page(driver)

После прокрутки все 50 товаров должны появиться в DOM. В моих тестах хватало 5 прокруток Page Down с задержкой 2 секунды, но в зависимости от скорости соединения это может потребовать настройки.

Шаг 3: извлеките данные о товарах

items = driver.find_elements(By.ID, "gridItemRoot")
products = []

for item in items:
    try:
        title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
    except:
        title = "N/A"
    try:
        price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
    except:
        price = "N/A"
    try:
        url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
    except:
        url = "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

Заворачивать каждое извлечение в try/except важно: у некоторых товаров может не быть цены или других полей, и ты не хочешь, чтобы один проблемный элемент сломал весь парсинг.

Шаг 4: обработайте пагинацию

Amazon делит 100 товаров Best Sellers на две страницы с разными URL:

urls = [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
]

all_products = []
for url in urls:
    driver.get(url)
    time.sleep(3)
    scroll_page(driver)
    # ... extract products as above ...
    all_products.extend(products)

driver.quit()

Что ожидать

В моих тестах Selenium собрал все 50 товаров на странице — это явная победа над requests + BS4. Минусы: примерно 45 секунд на страницу с учётом задержек при прокрутке, и меня всё равно начали блокировать, когда я запускал его слишком часто без ротации прокси. Amazon способен распознать Selenium даже с anti-detection флагами — для серьёзного масштаба нужны дополнительные меры (см. 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. API рендерит страницу в настоящем браузере на своей инфраструктуре, переключает прокси, обходит CAPTCHA и возвращает чистый HTML. После этого ты разбираешь HTML с помощью BeautifulSoup как обычно.

Шаг 1: отправьте запрос через API

Ниже пример с Scrape.do (цены начинаются от $29/мес за 150 000 кредитов; 1 кредит = 1 запрос независимо от рендеринга):

import requests
from bs4 import BeautifulSoup

api_token = "YOUR_API_TOKEN"
target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"

api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
response = requests.get(api_url)
soup = BeautifulSoup(response.text, "html.parser")

Дальше парсинг ничем не отличается от способа 1 — те же селекторы и та же логика извлечения.

Проверка реальных цен

Вот что берут крупные API за 1 000 запросов к Amazon по лучшему доступному тарифу:

ПоставщикСтоимость за 1 000 запросовКомментарий
Scrape.do~$0.19Фиксированная ставка, без множителей кредитов
Oxylabs~$1.80Множитель x5 за рендеринг JS
ScrapingBee~$4.90Множители x5–x25 за премиум-функции
Bright Data~$5.00+Самые полные данные (686 полей на товар), но и самый медленный вариант (~66 сек/запрос)

Плюсы и минусы

Плюсы: высокая надёжность (~99% success rate для Amazon у лучших провайдеров), не нужно поддерживать драйверы, антибот-защита обрабатывается автоматически, хорошо масштабируется.

Минусы: оплата за каждый запрос, расходы быстро растут при больших объёмах; всё равно нужно писать парсинг; всё ещё возможны изменения CSS-селекторов. При 100 000 страниц в месяц сравнение затрат становится очень заметным: собственная разработка обойдётся примерно в $1,98 млн за три года против $332 тыс. у API-провайдера — экономия 71%.

Точка безубыточности обычно находится в диапазоне 500 тыс. – 1 млн запросов в месяц. Ниже этого уровня выигрыш по времени почти всегда перекрывает стоимость API.

Способ 4: парсинг Amazon Best Sellers через Thunderbit (без Python)

Сразу уточню: я работаю в Thunderbit, так что учитывай этот контекст. Но при этом я действительно тестировал все четыре метода подряд, и разница во времени до готовых данных оказалась очень заметной.

Thunderbit — это AI web scraper в виде расширения Chrome. Суть в том, что вместо CSS-селекторов или Python-кода ИИ сам читает страницу и понимает, какие данные нужно извлечь. Для Amazon Best Sellers у Thunderbit уже есть готовые шаблоны, которые работают в один клик.

Шаг 1: установите расширение Thunderbit для Chrome

Открой Chrome Web Store и нажми «Add to Chrome». Зарегистрируй бесплатный аккаунт — бесплатного тарифа достаточно, чтобы всё протестировать.

Шаг 2: откройте страницу Amazon Best Sellers

Открой в Chrome любую страницу категории Amazon Best Sellers. Например: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/

Шаг 3: нажмите «One Click Extract»

Открой боковую панель Thunderbit и нажми «One Click Extract». ИИ анализирует структуру страницы и сам определяет колонки: Product Name, Price, Rating, Image URL, Vendor, Product URL и Rank. В моём тесте он правильно определил все нужные поля примерно за 3 секунды.

amazon-thunderbit-product-data.webp

Ты можешь переименовать, удалить или добавить колонки. Можно даже добавить собственные AI-подсказки для каждого поля — например, "categorize as Electronics/Apparel/Home", чтобы присвоить каждому товару категорию.

Шаг 4: нажмите «Scrape»

Нажми кнопку «Scrape». Thunderbit заполнит структурированную таблицу всеми данными о товарах со страницы. В cloud mode он может обрабатывать до 50 страниц одновременно параллельно, автоматически справляясь с lazy loading и пагинацией.

Шаг 5: бесплатно экспортируйте данные

Нажми «Export» и выбери место назначения: Excel, Google Sheets, Airtable или Notion. Экспорт на всех тарифах бесплатный — без скрытых доплат.

product-data-export.webp

Вся процедура заняла у меня около 90 секунд — от открытия страницы до готовой таблицы. Для сравнения: способ 1 занял около 20 минут (включая отладку lazy loading), способ 2 — около 35 минут (включая настройку Selenium), а способ 3 — примерно 15 минут (включая создание аккаунта в API).

Почему Thunderbit хорошо работает с Amazon

Поскольку ИИ каждый раз читает страницу заново, он автоматически подстраивается под изменения верстки — ничего не нужно поддерживать вручную. Это прямо решает самую частую жалобу на форумах по парсингу: "Обычного web scraper недостаточно, приходится добавлять слишком много обработчиков для изменений элементов". Когда Amazon меняет DOM (а это происходит регулярно), тебе не нужно ничего обновлять.

Cloud scraping mode прозрачно обрабатывает ротацию прокси, рендеринг и антибот-защиту. Для тех, кому нужен вариант "просто работает", это снимает весь головняк с блокировками.

Избавься от поддержки селекторов Когда Amazon меняет разметку, селекторы BeautifulSoup ломаются. ИИ Thunderbit заново читает страницу при каждом запуске и снова определяет поля. Get Started Free

Anti-Ban Playbook: как не попасть под блокировку Amazon

Антибот-защита Amazon очень агрессивная. Во время тестов меня временно блокировали по IP, и пользователи на форумах пишут о том же: "errors everywhere, amazon even started redirecting me to the homepage." Если ты выбираешь Python-способ (1–3), этот раздел критически важен.

Вот многоуровневая стратегия — от базовой к более продвинутой:

1. Меняйте User-Agent

Если отправлять один и тот же User-Agent снова и снова, это выглядит подозрительно. Используй набор из 5+ строк из примера в способе 1 и выбирай случайную для каждого запроса:

headers = {"User-Agent": random.choice(USER_AGENTS)}

2. Делайте случайные паузы между запросами

Фиксированные задержки легко вычисляются. Случайные — безопаснее:

time.sleep(random.uniform(2, 5))

Я заметил, что паузы 2–5 секунд между запросами позволяют оставаться незаметным для небольших батчей (до 50 запросов). Для больших прогонов лучше увеличить до 3–7 секунд.

3. Используйте ротацию прокси

Это самый важный пункт. По бенчмаркам Proxyway residential proxies в среднем дают около 94% успеха на Amazon против ~59% у datacenter-прокси — разница в 35 процентных пунктов. Стек обнаружения Amazon включает TLS fingerprinting, поведенческий анализ и rate limiting на уровне IP, поэтому обычные датацентровые IP распознаются за секунды.

Residential-прокси дороже ($2–$12 за GB в зависимости от провайдера), но намного надёжнее. Пример кода:

proxies = {
    "http": "http://user:pass@residential-proxy.example.com:8080",
    "https": "http://user:pass@residential-proxy.example.com:8080"
}
response = requests.get(url, headers=headers, proxies=proxies)

4. Усильте отпечаток браузера (Selenium)

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

# После инициализации driver уберите флаг navigator.webdriver
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})

5. Управляйте сессиями и cookie

Если сохранять cookie между запросами, scraper больше похож на живую пользовательскую сессию:

session = requests.Session()
# Сначала зайдите на главную, чтобы получить реалистичные cookies
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Затем парсите целевую страницу
response = session.get(target_url, headers=headers)

6. Когда лучше вообще не усложнять

Если ты не хочешь вручную разруливать всё это, cloud scraping в Thunderbit сам прозрачно решает ротацию прокси, рендеринг и антибот-защиту. Scraping API тоже закрывают большинство таких вопросов из коробки. По моему опыту, время, потраченное на отладку антибан-проблем, часто превышает время на написание самого парсера — так что подход "просто работает" действительно окупается.

Обогащение данными со страниц товара: парсинг карточек для более глубокого анализа

На странице Best Sellers есть только базовая информация: название, цена, рейтинг и позиция. Но настоящая ценность для FBA-анализа скрыта на страницах отдельных товаров. Вот чего ты лишаешься, если парсишь только листинг:

ПолеСтраница листингаСтраница товара
Название товара
Цена
Рейтинг
BSR Rank✅ (с подкатегориями)
Бренд
ASIN
Дата первой публикации
Размеры/вес
Количество продавцов
Список ключевых преимуществ
Владелец Buy Box

Поле "Date First Available" особенно ценно: оно показывает, как давно товар находится на рынке, а это важный сигнал для анализа конкуренции. А число продавцов и владелец Buy Box помогают понять, стоит ли вообще заходить в нишу (если сам Amazon удерживает более 30% доли Buy Box, конкурировать крайне тяжело).

Python-подход: обход списка URL товаров

После того как ты собрал URL товаров со страницы листинга, пройдись по каждому из них с задержкой:

for product in products:
    time.sleep(random.uniform(3, 6))
    detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
    detail_soup = BeautifulSoup(detail_response.text, "html.parser")
    
    # Извлечь бренд
    brand_tag = detail_soup.find("a", id="bylineInfo")
    product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
    
    # Извлечь ASIN из исходного кода страницы или URL
    # Извлечь Date First Available из таблицы характеристик
    # ... дополнительные поля ...

Предупреждение: обход 100 отдельных страниц товара заметно повышает риск блокировки. Закладывай ротацию прокси и более длинные задержки.

Подход Thunderbit: парсинг подстраниц в один клик

После того как ты собрал листинг в таблицу, нажми в Thunderbit «Scrape Subpages». ИИ посетит каждую страницу товара и автоматически обогатит таблицу дополнительными колонками — бренд, ASIN, характеристики, особенности. Без дополнительного кода, селекторов и настройки. Это особенно полезно для e-commerce-команд, которым нужна полная картина для решения о закупке, но не хочется писать и поддерживать парсер карточек товара.

Автоматизация повторяющихся парсингов: мониторинг Best Sellers во времени

Разовый парсинг полезен, но постоянный мониторинг даёт настоящее конкурентное преимущество. Отслеживание того, какие товары растут и падают, раннее замечание трендов и мониторинг ценовых изменений неделями и месяцами — вот что отличает обычное исследование от data-driven решений.

Python-подход: планирование через cron

На Linux/Mac можно запускать Python-скрипт по cron. Вот запись crontab для ежедневного запуска в 8:00:

0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

Для еженедельного запуска по понедельникам в 9:00:

0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

В Windows для этого используется Task Scheduler. Если нужен круглосуточный запуск без постоянно включённого ноутбука, можно развернуть задачу на VPS или AWS Lambda — но это добавляет инфраструктурной сложности.

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

Подход Thunderbit: Scheduled Scraper обычным языком

Функция Scheduled Scraper в Thunderbit позволяет задавать интервал простыми словами — например, "каждый понедельник в 9 утра" или "каждый день в 8 утра", а ИИ сам интерпретирует расписание. Парсинг запускается на облачных серверах Thunderbit (не нужно держать включённым браузер или компьютер), а данные автоматически экспортируются в Google Sheets или Airtable. Так получается live-дашборд для мониторинга без управления серверами — отличный вариант для операционных команд, которым нужна постоянная видимость без DevOps-нагрузки.

Правовые и этические аспекты парсинга Amazon

Я не юрист, и это не юридическая консультация. Но игнорировать правовую сторону в статье о парсинге было бы безответственно — пользователи форумов прямо пишут о рисках, и не без причины.

robots.txt Amazon: по состоянию на 2026 год robots.txt Amazon содержит 80+ отдельных Disallow-путей, но /gp/bestsellers/ явно не заблокирован для стандартных user agents. Однако для 35+ AI-ориентированных user agents (ClaudeBot, GPTBot, Scrapy и др.) применяется общий запрет Disallow: /. Отсутствие конкретного запрета не означает, что Amazon одобряет парсинг.

Условия использования Amazon: Conditions of Use Amazon (обновлены в мае 2025) прямо запрещают "использование любых автоматизированных процессов или технологий для доступа, получения, копирования или мониторинга любой части сайта Amazon" без письменного разрешения. Это не теория — в ноябре 2025 Amazon подал в суд на Perplexity AI из-за несанкционированного автоматизированного доступа и выиграл предварительный запретительный приказ.

Прецедент hiQ v. LinkedIn: в деле hiQ Labs v. LinkedIn (9-й округ, 2022) суд пришёл к выводу, что парсинг общедоступных данных, вероятно, не нарушает Computer Fraud and Abuse Act. Но в итоге hiQ всё равно заключила мировое соглашение и согласилась прекратить парсинг — победа по CFAA не защищает от исков о нарушении договора.

Практические рекомендации:

  • парси только общедоступные данные (цены, BSR, названия товаров — но не PII)
  • соблюдай rate limits и не перегружай серверы
  • используй данные только для легитимной конкурентной аналитики
  • проконсультируйся с юристом перед масштабным парсингом
  • учитывай, что 20+ штатов США уже приняли комплексные законы о конфиденциальности

Cloud scraping в Thunderbit использует стандартные браузероподобные паттерны запросов, но тебе всё равно стоит проверить соответствие требованиям с твоим юристом.

Здесь Python не нужен Если тебе нужна таблица, а не полноценный пайплайн, одного клика достаточно. Экспортируй данные прямо в Excel, Google Sheets, Airtable или Notion. Get Started Free

Какой способ выбрать? Краткое руководство

Коротко:

  • «Я учу Python и хочу проект на выходные». → Способ 1 (requests + BeautifulSoup). Ты отлично разберёшься в HTTP-запросах, HTML-парсинге и антибот-защите Amazon.
  • «Мне нужно парсить JS-тяжёлые страницы или сессии с логином». → Способ 2 (Selenium). Он тяжелее, но умеет работать с динамическим контентом.
  • «Я запускаю production-парсинг в масштабе». → Способ 3 (Scraping API). Пусть кто-то другой управляет прокси и рендерингом. Total cost of ownership у API выгоднее ниже 500K запросов в месяц.
  • «Я не разработчик и хочу получить данные за 2 минуты». → Способ 4 (Thunderbit). Без кода, без селекторов, без поддержки.
  • «Мне нужен постоянный мониторинг без возни с серверами». → Thunderbit Scheduled Scraper. Настроил и забыл.

Попробуй Thunderbit для Amazon Best Sellers Get Started Free

Выводы и ключевые мысли

После уикенда тестов вот что действительно оказалось важным:

requests + BeautifulSoup отлично подходит для обучения, но ограничение lazy loading (только около 30 из 50 товаров) и хрупкие CSS-селекторы делают его неудобным для production.

Selenium решает проблему lazy loading и собирает все 50 товаров на странице, но он медленный, прожорливый к памяти и всё равно может быть обнаружен защитой Amazon.

Scraping API дают лучшую надёжность для парсинга в production — около 99% success rate на Amazon — но расходы растут, и тебе всё равно нужно писать код парсинга.

Thunderbit дал самый быстрый путь к данным с большим отрывом. ИИ обрабатывает изменения верстки, lazy loading, пагинацию и антибот-защиту без какой-либо настройки. Для нетехнических пользователей и команд, которым нужны регулярные данные без DevOps-нагрузки, это самый практичный вариант.

Главный вывод? Антибот-защита Amazon и частые изменения верстки означают, что решения без необходимости обслуживания экономят больше всего времени в долгосрочной перспективе. Каждый час, потраченный на отладку сломанных селекторов и ротацию прокси, — это час, который ты не тратишь на анализ.

Хочешь попробовать no-code-подход? Бесплатный тариф Thunderbit даёт достаточно кредитов, чтобы собрать данные по нескольким категориям Best Sellers и посмотреть результат своими глазами. Предпочитаешь Python? Примеры кода выше помогут стартовать. В любом случае у тебя будут данные Amazon Best Sellers в таблице, а не открытая вкладка браузера.

Больше материалов о web scraping смотри в наших руководствах: как парсить товары и отзывы Amazon, как извлекать данные с сайтов в Excel и лучшие AI web scraper. Также можно посмотреть пошаговые разборы на YouTube-канале Thunderbit.

Узнать больше

Fawad Khan
Fawad Khan
Фавад зарабатывает на жизнь писательством — и, честно говоря, ему это даже нравится. Он годами разбирался, что делает текст цепляющим, а что заставляет читателя пролистнуть дальше. Спросите его о маркетинге — и он будет говорить часами. Спросите о карбонаре — и он будет говорить еще дольше.
Topics
Web Scraping ToolsAI Web Scraper
Содержание
Thunderbit · AI-агент для веб-данных

Извлекай данные с любой страницы за 1 клик

Нам доверяют более 250 000 пользователей
доступен бесплатный тариф
От веб-страницы к таблице
Опиши, что тебе нужно, — AI-агент Thunderbit соберет это и экспортирует в Excel, Google Sheets, Airtable или Notion. Старт бесплатный.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week