Сбор данных из Amazon Best Sellers

Полное руководство по скрейпингу бестселлеров Amazon с помощью Python

Ручное отслеживание цен и товаров может быть сложным. Здесь на помощь приходит веб-скрейпинг. Вместо того чтобы все записывать вручную, я могу автоматизировать этот процесс с помощью Python. Собирая данные со страницы Best Sellers, я могу получать их в форматах вроде CSV, что упрощает анализ и отслеживание трендов. Давайте разберемся, как собирать данные из Amazon Best Sellers с помощью Python.

Что такое Amazon Best Sellers?

Рейтинг Amazon Best Sellers (BSR) — это система, которая ранжирует товары по объему продаж. Этот рейтинг помогает покупателям находить самые продаваемые товары в разных категориях и видеть, какое место по продажам занимает товар, который они рассматривают. BSR отображается на каждой странице товара и регулярно обновляется, отражая текущие тренды.

Парсинг страниц Best Sellers похож на парсинг любой другой страницы товара Amazon. Однако у Amazon есть меры защиты, которые затрудняют быстрый доступ к этим данным. Если отправлять слишком много запросов, Amazon может заблокировать ваш IP-адрес. Чтобы избежать этого, в Python-код нужно добавить защитные меры. Управление этим риском критически важно для успешного веб-скрейпинга на Amazon.

Лучшие инструменты для скрейпинга Amazon

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

In a hurry? Here is a TL;DR list:

  • Яркие данныеПродвинутый скрейпинг Amazon с антидетектом и глобальными прокси.
  • OxylabsСпециализированный e-commerce-скрейпинг с функциями локализации.
  • SmartproxyAPI и прокси-решения с поддержкой ротации IP-адресов.
  • ZyteСкрейпер для электронной коммерции с настраиваемыми селекторами и API.
  • ScraperAPIПоддерживает несколько языков и предлагает гибкие тарифы на основе кредитов.

Настройка Python-среды для скрейпинга

Нужно установить необходимые библиотеки Python, чтобы начать сбор данных из Amazon Best Sellers. Мы будем использовать Selenium для автоматизации браузера, webdriver-manager для управления драйверами браузера и pandas для сохранения собранных данных в CSV-файле.

Шаг 1: Установите Python

Сначала убедитесь, что Python установлен на вашем компьютере. Скачать его можно с официального сайта. Python website.

Затем откройте терминал или командную строку и установите необходимые зависимости:

pip install selenium webdriver-manager pandas

Шаг 2: Изучение страницы Amazon Best Sellers

Прежде чем начать скрейпинг, нужно понять структуру страницы Amazon Best Sellers. Откройте любую страницу Amazon Best Sellers в браузере и используйте инструмент «Inspect» (щелкните правой кнопкой мыши по любому элементу и выберите «Inspect»), чтобы изучить HTML.

В этом руководстве мы будем собирать данные со страницы Best Sellers категории “Kitchen & Dining”. Структура страницы включает:

  • Название товара: Название товара находится в определенном HTML-элементе с классом, который однозначно его идентифицирует.
  • Цена товара: Цена находится внутри другого конкретного HTML-элемента.
  • Product URL: У каждого товара есть URL, ведущий на его страницу с подробным описанием.

Эти элементы станут основой для нашего сбора данных.

Шаг 3: Настройка Selenium для веб-скрейпинга

Чтобы собирать данные с Amazon, мы будем использовать Selenium для взаимодействия со страницей Best Sellers и извлечения нужной информации.

Сначала импортируйте необходимые библиотеки:

с сайта селен импорт webdriver
с сайта selenium.webdriver.chrome.service импорт Service
с сайта selenium.webdriver.common.by импорт По ссылке
с сайта selenium.webdriver.chrome.options импорт Опции
с сайта webdriver_manager.chrome импорт ChromeDriverManager
импорт панды в роли pd
импорт время

Далее создайте функцию для инициализации драйвера Chrome. Эта функция настраивает headless-браузер Chrome (браузер, который работает в фоновом режиме без графического интерфейса):

def init_chrome_driver():
chrome_options = Options()
chrome_options.add_argument(" - headless")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
возврат драйвер

Шаг 4: Написание логики скрейпинга

Нам нужна функция, которая загружает страницу Best Sellers и собирает данные о товарах (название, цену и URL). Следующая функция справится с этой задачей:

def get_products_from_page(url, driver):
driver.get(url)
time.sleep(3) # Дождитесь загрузки страницы
# Find all products on the page
product_elements = driver.find_elements(By.CLASS_NAME, "zg-item")
# List to store product data
продукты = []
# Loop through the products and extract data
для продукт в product_elements:
попробуйте:
title = product.find_element(By.CLASS_NAME, "p13n-sc-truncate").text
url = product.find_element(By.CLASS_NAME, "a-link-normal").get_attribute("href")
price = product.find_element(By.CLASS_NAME, "p13n-sc-price").text
products.append({"title": title, "url": url, "цена": price})
кроме Исключение в роли e:
печать(f"Error extracting product data: {e}")
продолжить
возврат продукция

Эта функция принимает на вход URL страницы Best Sellers и драйвер Selenium. Затем она извлекает для каждого товара на странице название, цену и URL и сохраняет их в список.

Шаг 5: Экспорт данных в CSV

Когда данные будут готовы, мы можем сохранить их в CSV-файл с помощью Pandas:

def save_to_csv(products, filename):
df = pd.DataFrame(products)
df.to_csv(filename, index=Ложь)

Эта функция преобразует список данных о товарах в Pandas DataFrame и сохраняет его в CSV-файл.

Шаг 6: Собираем все вместе

Теперь мы можем объединить все в основную функцию, которая запускает процесс веб-скрейпинга:

def главная():
url = "https://www.amazon.com/Best-Sellers-Kitchen-Dining/zgbs/kitchen/"
driver = init_chrome_driver()
попробуйте:
products = get_products_from_page(url, driver)
save_to_csv(products, "amazon_best_sellers.csv")
наконец-то:
driver.quit()
если __name__ == "__main__": main()

Шаг 7: Запуск скрипта

Чтобы запустить скрипт, просто выполните Python-файл в терминале:

python main.py

After running the script, a file named amazon_best_sellers.csv will be generated in your working directory containing the scraped product data.

Шаг 8: Решение проблем при скрейпинге

Хотя приведенный выше скрипт работает, парсинг Amazon не обходится без сложностей. Amazon использует такие антискрейпинговые меры, как:

  1. Rate-limiting: Amazon can block your IP address if it detects too many requests in a short period. To avoid this, implement a delay between requests using time.sleep().
  2. CAPTCHA: Amazon использует CAPTCHA, чтобы не дать ботам скрейпить свой сайт. Selenium не умеет решать CAPTCHA, поэтому вам может понадобиться сервис вроде 2Captcha, чтобы обойти их.
  3. Блокировка по IP: Чтобы избежать блокировки IP-адреса, используйте прокси-сервис вроде ScraperAPI или ротацию IP-адресов.

Шаг 9: Скрейпинг дополнительных категорий

Скрипт можно легко модифицировать, чтобы собирать данные со страниц Best Sellers других категорий. Просто замените URL в функции main() на URL нужной вам категории.

Например, чтобы собрать данные со страницы Best Sellers в категории «Books», измените URL на:

url = "https://www.amazon.com/Best-Sellers-Books/zgbs/books/"

Шаг 10: Использование API для скрейпинга Amazon (альтернативный метод)

Если при классическом веб-скрейпинге возникает слишком много сложностей, можно использовать Amazon Scraping API. Такие API предлагают более простой и надежный способ собирать данные с Amazon.

Например, Amazon Best Sellers Scraper API позволяет собирать данные Best Sellers, не беспокоясь о блокировках IP или CAPTCHA. Вот пример использования:

импорт requests
def scrape_amazon_api():
payload = {
"source": "amazon_bestsellers",
"domain": "com",
"query": "284507",
"render": "html",
"start_page": 1,
"parse": Правда,
}
response = requests.post("https://realtime.oxylabs.io/v1/queries", json=payload, auth=("USERNAME", "PASSWORD"))
data = response.json()
# Process the data and save it to CSV
products = data["results"][0]["content"]["results"]
df = pd.DataFrame(products)
df.to_csv("amazon_products_api.csv", index=Ложь)
scrape_amazon_api()

Заключение

Скрейпинг страниц Amazon Best Sellers с помощью Python - ценный способ собирать данные о товарах для исследований, анализа и конкурентной разведки. Хотя традиционные методы веб-скрейпинга с использованием Selenium могут быть эффективными, они сталкиваются с такими проблемами, как ограничение частоты запросов и CAPTCHA. Чтобы обойти эти препятствия, можно использовать продвинутые техники, например ротацию прокси, или специализированные API для скрейпинга, предназначенные для крупномасштабного сбора данных.

Похожие записи