Полное руководство по скрейпингу бестселлеров 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-скрейпинг с функциями локализации.
- Smartproxy: API и прокси-решения с поддержкой ротации 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 использует такие антискрейпинговые меры, как:
- 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().
- CAPTCHA: Amazon использует CAPTCHA, чтобы не дать ботам скрейпить свой сайт. Selenium не умеет решать CAPTCHA, поэтому вам может понадобиться сервис вроде 2Captcha, чтобы обойти их.
- Блокировка по 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 для скрейпинга, предназначенные для крупномасштабного сбора данных.

