Passer au contenu

Comment récupérer les données des produits Best Buy avec Python et Selenium

Best Buy est l'un des plus grands détaillants d'électronique aux États-Unis. Avec des milliers de produits dans des catégories telles que les ordinateurs, les appareils électroménagers, les jeux vidéo et bien plus encore, Best Buy offre un trésor de données aux analystes et aux entreprises. Dans ce guide complet, nous expliquerons comment récupérer les données des produits Best Buy à l'aide de Python et Selenium.

Pourquoi supprimer les données de Best Buy ?

Voici quelques-unes des principales raisons pour lesquelles vous souhaiterez peut-être récupérer les données du site Web de Best Buy :

  • Recherche de prix compétitifs – Suivez les prix de Best Buy au fil du temps pour rester compétitif.
  • Analyse de l'assortiment de produits – Découvrez sur quelles catégories et marques Best Buy se concentre.
  • Tarification basée sur la localisation – Vérifiez si les prix Best Buy varient selon la région géographique.
  • Surveillance des détails du produit – Surveillez les changements dans les détails du produit tels que la description, les images, les notes.
  • Suivi d'inventaire – Vérifiez les niveaux de stock en temps réel pour les produits.

Bien que Best Buy fournisse certaines API pour accéder à ses données, celles-ci ont des limites en termes d'échelle et peuvent changer à tout moment. Le web scraping vous permet de collecter de grandes quantités de données Best Buy rapidement, de manière rentable et sans dépendre de leurs API.

Aperçu du grattage

Nous utiliserons Python et Selenium dans ce tutoriel. Voici un aperçu des étapes :

  1. Utilisez Selenium pour charger les pages de produits Best Buy.
  2. Analysez le HTML de chaque page pour extraire des données clés telles que le titre, le prix, la description.
  3. Stockez les données récupérées dans la trame de données Pandas ou dans un fichier CSV.
  4. Ajoutez des proxys pour éviter d'être bloqué lors du scraping.

Passons en revue chaque section en détail.

Importations et configuration

Nous importerons les bibliothèques suivantes :

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

import pandas as pd

Selenium chargera les pages Web, BeautifulSoup analysera le code HTML et Pandas stockera les données récupérées.

Nous utiliserons Chrome comme navigateur :

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = webdriver.Chrome(options=options)

Et nous ajouterons quelques conditions d'attente Selenium pour permettre aux pages de se charger complètement :

wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.ID, "productTitle")))

Grattez les pages de produits

Nous pouvons maintenant gratter une page produit Best Buy. Nous allons extraire les champs clés souhaités :

url = "https://www.bestbuy.com/site/apple-watch-series-8-41mm-gps-cellular-starlight-aluminum-case-with-starlight-sport-band-starlight/6521420.p?skuId=6521420"

driver.get(url)

product = {
    ‘title‘: driver.find_element(By.ID, "productTitle").text,
    ‘price‘: driver.find_element(By.CLASS_NAME, "priceView-customer-price").text,
    ‘rating‘: driver.find_element(By.CLASS_NAME, "c-review-average").text,
    ‘description‘: driver.find_element(By.ID, "longDescription").text
}

Nous pouvons envelopper cela dans une fonction pour récupérer n'importe quelle URL de produit :

def scrape_product(url):
   driver.get(url)

   product = {
       ‘title‘: ...,
       ‘price‘: ...,
       ...
   }

   return product

Et parcourez une liste d’URL :

products = []

urls = [
    ‘url1‘,
    ‘url2‘,
    ...
]

for url in urls:
    product = scrape_product(url)
    products.append(product)

Cela nous donne une liste de données sur les produits bien structurées de Best Buy !

Stockage des données récupérées

Nous pouvons stocker les données Best Buy récupérées dans une trame de données Pandas :

import pandas as pd 

df = pd.DataFrame(products)
print(df)

Ou exportez sous forme de fichier CSV :

df.to_csv(‘bestbuy_products.csv‘, index=False)

Cela permet de conserver les données organisées pour une analyse future.

Évitez d'être bloqué

Pour éviter d'être bloqué par Best Buy lors du scraping, nous pouvons ajouter des proxys :

from selenium.webdriver.common.proxy import Proxy, ProxyType

proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = "xxx.xxx.xxx.xxx:xxxx" 

options.proxy = proxy

La rotation de différents proxys empêchera votre adresse IP d’être signalée pour le scraping.

Quelques autres conseils :

  • Ajouter des délais aléatoires entre les demandes
  • Rotation des agents utilisateurs
  • Grattez par rafales plutôt que d’un seul coup

Techniques avancées

Ce didacticiel couvre les bases, mais il existe des techniques plus avancées pour les grattages Best Buy plus importants :

  • multithreading – Grattez plus rapidement en répartissant le travail entre les threads
  • Grille de sélénium – Distribuer le scraping sur les nœuds Selenium distants
  • API Scraper – Tirer parti des proxys basés sur le cloud et de la résolution de captcha

Il existe également des outils comme Scrapy qui fournissent un cadre pour les grands projets de scraping.

Éthique à gratter

Lorsque vous supprimez Best Buy ou tout autre site, assurez-vous de :

  • Suivez leur robots.txt et leurs conditions d'utilisation
  • Évitez de surcharger leurs serveurs
  • Utiliser les données de manière légale et éthique

Le scraping de données publiques est généralement légal, mais grattez toujours de manière responsable !

Conclusion

Dans ce guide, nous avons vu comment utiliser Python et Selenium pour récupérer les données produit de Best Buy. Les étapes comprenaient :

  • Chargement de pages avec Selenium
  • Analyser du HTML avec BeautifulSoup
  • Stockage des données dans Pandas
  • Ajouter des proxys pour éviter les blocages

Le scraping peut fournir des informations précieuses à partir des données sur les produits Best Buy. Avec les bonnes techniques, vous pouvez créer des scrapers pour extraire toutes sortes d’informations de leur site.

Faites-moi savoir si vous avez d'autres questions!

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *