Вебскрапінг Amazon Best Sellers

Найповніший посібник із вебскрапінгу Amazon Best Sellers за допомогою 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:

  • Bright DataПросунутий вебскрапінг Amazon із антидетекцією та глобальними проксі.
  • OxylabsСпеціалізований вебскрапінг e-commerce із функціями локалізації.
  • SmartproxyAPI і проксі-рішення з підтримкою ротації IP-адрес.
  • ZyteВебскрапер для e-commerce із налаштовуваними селекторами та 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

Перш ніж почати вебскрапінг, нам потрібно зрозуміти структуру сторінки Amazon Best Sellers. Відкрийте будь-яку сторінку Amazon Best Sellers у браузері та скористайтеся інструментом “Inspect” (клацніть правою кнопкою миші на будь-якому елементі й виберіть “Inspect”), щоб дослідити HTML.

У цьому туторіалі ми зберемо дані зі сторінки Best Sellers для категорії “Kitchen & Dining”. Структура сторінки включає:

  • Назва товару: Назва товару розташована в певному HTML-елементі з класом, який унікально його ідентифікує.
  • Ціна продукту: Ціна розташована в іншому конкретному HTML-елементі.
  • Product URL: Кожен товар має URL, що веде на його детальну сторінку.

Ці елементи стануть основою для наших зусиль із вебскрапінгу.

Крок 3: Налаштування Selenium для вебскрапінгу

Щоб виконати вебскрапінг Amazon, ми використаємо Selenium для взаємодії зі сторінкою Best Sellers і вилучення потрібної інформації.

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

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import time

Далі створіть функцію для ініціалізації драйвера 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)
return driver

Крок 4: Написання логіки вебскрапінгу

Нам потрібна функція, яка завантажує сторінку Best Sellers і збирає дані про товари (назву, ціну та URL). Нижче наведена функція, яка це зробить:

def get_products_from_page(url, driver):
driver.get(url)
time.sleep(3) # Wait for the page to load
# Find all products on the page
product_elements = driver.find_elements(By.CLASS_NAME, "zg-item")
# List to store product data
products = []
# Loop through the products and extract data
for product in product_elements:
try:
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": заголовок, "url": url, "price": price})
except Exception as e:
print(f"Помилка під час вилучення даних про товар: {e}")
continue
return products

Ця функція приймає як вхідні дані URL сторінки Best Sellers і драйвер Selenium. Потім вона витягує на сторінці назву, ціну та URL кожного товару і зберігає їх у списку.

Крок 5: Експорт даних у CSV

Коли ми отримаємо дані, можемо зберегти їх у CSV-файл за допомогою Pandas:

def save_to_csv(products, filename):
df = pd.DataFrame(products)
df.to_csv(filename, index=False)

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

Крок 6: Зводимо все докупи

Тепер ми можемо об’єднати все в основну функцію, яка запускає процес вебскрапінгу:

def main():
url = "https://www.amazon.com/Best-Sellers-Kitchen-Dining/zgbs/kitchen/"
driver = init_chrome_driver()
try:
products = get_products_from_page(url, driver)
save_to_csv(products, "amazon_best_sellers.csv")
finally:
driver.quit()
if __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 категорії, яку хочете скрапити.

Наприклад, щоб зібрати сторінку бестселерів «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. Ось приклад того, як ним скористатися:

import requests
def scrape_amazon_api():
payload = {
"source": "amazon_bestsellers",
"domain": "com",
"query": "284507",
"render": "html",
"start_page": 1,
"parse": True,
}
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=False)
scrape_amazon_api()

Conclusion

Вебскрапінг сторінок Amazon Best Sellers за допомогою Python дає цінний спосіб збирати дані про товари для досліджень, аналізу та конкурентної розвідки. Хоча традиційні методи вебскрапінгу, зокрема із Selenium, можуть бути ефективними, вони мають такі труднощі, як rate limiting і CAPTCHA. Щоб подолати ці перешкоди, ви можете впровадити просунуті підходи, як-от ротаційні проксі, або скористатися спеціалізованими API для вебскрапінгу, призначеними для масштабного збирання даних.

Схожі записи