Récupération des données sur les produits Walmart à l'aide de Massive

Jason Grad
Co-fondateur
March 4, 2025
Table of Contents

Prêt à tester les performances d'un proxy premium ?

Récupération des données sur les produits Walmart à l'aide de Massive

Jason Grad
Co-fondateur
March 4, 2025

Walmart fournit une vaste collection de données sur les produits via son site Web Walmart, qui constitue une ressource précieuse pour les entreprises, les chercheurs et les spécialistes du marketing. Que vous accédiez à une seule page de produit Walmart ou que vous parcouriez plusieurs pages Walmart, la collecte d'informations pertinentes peut être difficile en raison des mesures anti-grattage strictes de Walmart.

Cet article explique comment les proxys Massive permettent de contourner plus facilement ces restrictions et vous permettent de collecter les informations sur les produits Walmart à partir de sites spécifiques.

Allons y plonger !

Cas d'utilisation courants pour les données sur les produits Walmart

Le site Web de Walmart contient des informations précieuses qui peuvent être utilisées à diverses fins, notamment :

  • Étude de produit et de marché : Analysez les points de données de chaque page de produit Walmart, y compris les critiques et les évaluations pour comprendre les préférences des consommateurs et les tendances du marché.
  • Analyse de la concurrence : Obtenez des informations sur les prix et les stratégies de produits des concurrents
  • Surveillance et optimisation des prix : Suivez les prix en temps réel pour ajuster les stratégies de prix et rester compétitif.
  • Gestion des stocks : Surveillez les niveaux de stock et la disponibilité des produits pour optimiser les opérations d'inventaire et de chaîne d'approvisionnement.

Pourquoi utiliser des proxies dans le Web Scraping

Les proxys jouent un rôle crucial dans le web scraping en servant d'intermédiaires entre votre scraper et le site Web cible. Ils offrent plusieurs avantages clés, notamment :

  1. Éviter les interdictions IP: les proxys vous permettent de changer les adresses IP, ce qui réduit le risque de détection et de blocage par le site Web.
  2. Accès à du contenu géo-restreint: certains contenus ou produits ne sont disponibles que dans certaines régions. Les proxys vous permettent d'apparaître comme si vous naviguiez depuis un autre endroit.
  3. Contournement des limites de débit: Les sites Web imposent souvent des limites au nombre de requêtes provenant d'une seule adresse IP. Les proxys permettent de répartir vos demandes sur plusieurs adresses IP, ce qui vous permet d'éviter ces restrictions.

Comprendre les mesures anti-grattage de Walmart

L'extraction de données auprès de Walmart peut être difficile en raison des nombreuses protections mises en place. Voici quelques problèmes courants auxquels vous pourriez être confronté :

  1. Les défis du CAPTCHA: Walmart utilise des CAPTCHA pour bloquer les robots. Bien que ces problèmes soient relativement faciles à résoudre pour les humains, ils peuvent être difficiles pour les scripts automatisés.
  2. Limitation de débit: Walmart limite le nombre de demandes que vous pouvez faire dans un court laps de temps. Si vous dépassez cette limite, votre accès peut être bloqué.
  3. Blocage IP: Si Walmart détecte une activité de grattage excessive à partir d'une seule adresse IP, il se peut qu'il bloque cette adresse IP.
  4. Modification de la mise en page: Walmart met fréquemment à jour la structure de ses pages Web. Ces modifications peuvent endommager votre code de scraping et vous obliger à le mettre à jour régulièrement.
  5. Contenu dynamique : La page de recherche Walmart et les autres pages Walmart utilisent JavaScript pour charger le contenu de manière dynamique, ce qui peut rendre le scraping plus complexe.

Par exemple, j'ai créé un script pour extraire les données de plusieurs pages de produits sur Walmart. Cependant, mon scraper a finalement été bloqué par le système de détection de robots de Walmart, comme vous pouvez le voir sur l'image ci-dessous.

Ce défi, qui me demande de « Appuyer et maintenir » pour vérifier mon humanité, est un mécanisme CAPTCHA couramment utilisé par les sites Web pour empêcher les robots d'accéder à leur contenu.

À ce stade, mon scraper ne pouvait plus accéder aux données, ce qui était à la fois frustrant et chronophage. Mais ne vous inquiétez pas, il existe une solution. Nous allons découvrir comment Proxys résidentiels Massive peut vous aider à extraire les données sur les produits Walmart.

Proxys résidentiels et centres de données pour Walmart Scraping : ce qui fonctionne le mieux

Cela fait un moment que je lis Walmart, et votre choix de proxy fait toute la différence. D'après mon expérience, les proxys résidentiels valent le coût supplémentaire. Ils utilisent de véritables adresses IP attribuées par de véritables fournisseurs de services Internet aux propriétaires. Ainsi, selon les systèmes de Walmart, vous avez l'air d'un acheteur ordinaire qui navigue depuis chez lui. Oui, cela coûte plus cher, mais la qualité des données et les sessions de grattage ininterrompues en valent la peine.

Les proxys de centres de données sont tentants, ils sont plus rapides et moins chers, mais les systèmes anti-bots de Walmart les détectent assez bien.

Avantages de l'utilisation de proxys Massive pour Walmart Scraping

Les proxys résidentiels Massive offrent plusieurs avantages clés :

  1. 🌐 Portée mondiale : Accédez à plus de 195 pays : villes cibles, codes postaux ou ASN
  2. 🔒 Anonymat : Des millions d'adresses IP rotatives + rotation personnalisable (par demande ou 1 à 60 minutes)
  3. ⚡ Vitesse et fiabilité : Taux de réussite de 99,8 %, temps de réponse inférieur à 0,7 s et disponibilité de 99,9 %
  4. 💰 Économique : Commencez à 4,49 $/Go avec des forfaits évolutifs
  5. ✅ Conforme à l'éthique : Proxys entièrement conformes au GDPR/CCPA, d'origine 100 % éthique
  6. 🛠️ Assistance : Via Slack, Skype, e-mail ou tickets

Débuter avec Massive

Si vous découvrez Massive pour la première fois, créer un compte. Choisissez un plan adapté à vos besoins.

Remarque : Nous proposons un Essai gratuit de 2 Go pour les entreprises. Pour commencer, remplissez ce formulaire. Si vous avez besoin de plus de bande passante, contactez notre équipe commerciale, et nous vous aiderons.

Après votre inscription, rendez-vous sur Tableau de bord Massive pour récupérer vos informations d'identification du proxy (nom d'utilisateur et mot de passe).

Étapes de configuration :

Visitez le Démarrage rapide section pour personnaliser les paramètres de votre proxy :

  • Choisissez votre protocole préféré (HTTP, HTTPS ou SOCKS5)
  • Choisissez entre proxys rotatifs ou collants
  • Définissez les préférences de ciblage géographique (pays, État, ville ou code postal)

Une fois la configuration terminée, vous obtiendrez une commande cURL prête à l'emploi adaptée à votre cas d'utilisation spécifique.

Pour des fonctionnalités avancées telles que le ciblage basé sur la localisation et les sessions persistantes, consultez le Une documentation volumineuse. La documentation fournit des instructions étape par étape pour tirer le meilleur parti des proxies résidentiels Massive.

Avec cette configuration, vous pouvez utiliser Massive Proxies pour extraire les données des produits Walmart dans une région spécifique.

Création de Walmart Scraper avec Python et Massive Proxies

Bien que vous puissiez utiliser une API Walmart Scraper, créer votre propre solution avec une configuration d'agent utilisateur appropriée vous permet de mieux contrôler le processus de grattage. Explorons comment créer un scraper Python pour les données des produits Walmart à l'aide de proxies Massive et de Playwright. Playwright permet d'automatiser les actions du navigateur et de gérer le contenu dynamique, comme le chargement de nouveaux produits au fur et à mesure que vous faites défiler la page.

En utilisant Massive proxys, vous pouvez extraire les données de Walmart depuis n'importe quel endroit où Walmart opère, simplement en modifiant les paramètres du proxy. Dans ce didacticiel, nous allons montrer comment extraire les données des produits dans Washington, États-Unis.

Nous extrairons les données suivantes pour chaque produit Walmart : nom du produit, évaluation, nombre d'avis, prix, prix précédent (si disponible), informations de livraison et lien vers le produit.

1. Configurez votre environnement Python

Pour commencer, assurez-vous que Python est installé sur votre machine. Ensuite, installez Playwright et les fichiers binaires de navigateur nécessaires :

pip install playwright
playwright install

2. Importer les bibliothèques requises

Maintenant, commençons à écrire le script. Vous devez importer les bibliothèques suivantes :

  • asyncio pour la programmation asynchrone.
  • aléatoire pour ajouter des délais aléatoires.
  • jason pour enregistrer nos données récupérées.
  • dramaturge asynchrone de Playwright pour contrôler le navigateur et automatiser le scraping.
import asyncio
import random
import json
from playwright.async_api import async_playwright

3. Lancez le navigateur avec des paramètres de proxy Massive

Lancez le navigateur Chromium en mode headless avec les paramètres du proxy. Cela vous permet de contourner les mesures anti-grattage de Walmart en utilisant Massive procurations.

async with async_playwright() as p:
    browser = await p.chromium.launch(
        headless=True,
        args=[
            "--disable-blink-features=AutomationControlled",
            "--disable-infobars",
            "--disable-extensions",
            "--disable-popup-blocking",
            "--no-sandbox",
        ],
    )

Ensuite, configurez le contexte du navigateur pour acheminer le trafic via Massive proxys résidentiels :

context = await browser.new_context(
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
    locale="en-GB",
    proxy={
        "server": "https://network.joinmassive.com:65535",
        "username": "MASSIVE_USERNAME-country-US-subdivision-WA",
        "password": "MASSIVE_PASSWORD",
    },
    viewport={"width": 1920, "height": 1080},
)

Ouvrez une nouvelle page et accédez aux résultats de recherche de Walmart :

page = await context.new_page()
await page.goto(
    "https://www.walmart.com/search?q=windows+laptops",
    wait_until="domcontentloaded",
)

Ce code dirigera le navigateur vers la page des résultats de recherche Walmart pour les « ordinateurs portables Windows ».

4. Faites défiler et extrayez les données

Comme Walmart charge de plus en plus de produits au fur et à mesure que vous faites défiler la page, nous allons simuler un défilement semblable à celui d'un humain pour nous assurer que tous les produits sont chargés :

async def scroll_and_extract(page):
    previous_height = await page.evaluate("document.body.scrollHeight")
    while True:
        await page.evaluate("window.scrollBy(0, Math.random() * 100 + 300)")
        await asyncio.sleep(random.uniform(1, 2))

        new_height = await page.evaluate("document.body.scrollHeight")
        if new_height == previous_height:
            break
        previous_height = new_height

5. Extraire les informations sur le produit

Nous extrayons maintenant des détails tels que le nom du produit, son prix et ses évaluations à l'aide de sélecteurs CSS. Voici comment extraire chaque information :

A. Nom du produit:

Extrait de code :

product_name = await product.query_selector('span[data-automation-id="product-title"]')
product_name = await product_name.inner_text() if product_name else "N/A"

B. Prix actuel :

Extrait de code :

price = await product.query_selector(
    'div[data-automation-id="product-price"] div[aria-hidden="true"]'
)
price = await price.inner_text() if price else "N/A"

C. Prix précédent :

Extrait de code :

previous_price = await product.query_selector("div.gray.strike")
previous_price = await previous_price.inner_text() if previous_price else "N/A"

D. Évaluation du produit :

Extrait de code :

rating = await product.query_selector('span[data-testid="product-ratings"]')
rating = await rating.get_attribute("data-value") if rating else "N/A"

E. Nombre d'avis :

Extrait de code :

num_reviews = await product.query_selector('span[data-testid="product-reviews"]')
num_reviews = await num_reviews.inner_text() if num_reviews else "N/A"

F. Informations d'expédition :

Extrait de code :

shipping_info = await product.query_selector('div[data-automation-id="fulfillment-badge"]')
shipping_info = await shipping_info.inner_text() if shipping_info else "N/A"

Voici le code combiné qui renvoie toutes les informations de chaque produit.

async def extract_product_info(product):
    title_selector = 'span[data-automation-id="product-title"]'
    price_selector = 'div[data-automation-id="product-price"] div[aria-hidden="true"]'
    previous_price_selector = "div.gray.strike"
    rating_selector = 'span[data-testid="product-ratings"]'
    reviews_selector = 'span[data-testid="product-reviews"]'
    shipping_info_selector = 'div[data-automation-id="fulfillment-badge"]'
    product_url_selector = 'a[href*="/ip/"]'

    title = await product.query_selector(title_selector)
    product_url_element = await product.query_selector(product_url_selector)
    product_url = (
        await product_url_element.get_attribute("href") if product_url_element else None
    )

    if product_url and "from=/search" in product_url:
        current_price = await product.query_selector(price_selector)
        previous_price = await product.query_selector(previous_price_selector)
        rating = await product.query_selector(rating_selector)
        num_reviews = await product.query_selector(reviews_selector)
        shipping_info = await product.query_selector(shipping_info_selector)

        return {
            "title": await title.inner_text() if title else "N/A",
            "product_url": f"https://www.walmart.com/{product_url}",
            "current_price": (
                await current_price.inner_text() if current_price else "N/A"
            ),
            "previous_price": (
                await previous_price.inner_text() if previous_price else "N/A"
            ),
            "rating": await rating.get_attribute("data-value") if rating else "N/A",
            "num_reviews": await num_reviews.inner_text() if num_reviews else "N/A",
            "shipping_info": (
                await shipping_info.inner_text() if shipping_info else "N/A"
            ),
        }
    return None

6. Grattez plusieurs pages

Pour parcourir plusieurs pages, nous allons localiser le bouton « Page suivante » et cliquer sur chacune d'elles

async def scrape_walmart(page, current_page):
    async def product_info_generator(current_page):
        while True:
            print(f"Scraping page {current_page}...")
            await scroll_and_extract(page)

            # Extract product information
            product_elements = await page.query_selector_all(
                'div[role="group"][data-item-id]'
            )

            for product in product_elements:
                product_data = await extract_product_info(product)
                if product_data:
                    yield product_data
            # Check for the "Next Page" button
            next_page_button = await page.query_selector('a[data-testid="NextPage"]')
            if next_page_button:
                await next_page_button.click()
                current_page += 1
            else:
                break

    return product_info_generator(current_page)

7. Enregistrer les données dans un fichier JSON

Une fois toutes les données extraites, enregistrez-les dans un fichier JSON :

def save_data_to_json(data, filename):
    with open(filename, "w", encoding="utf-8") as json_file:
        json.dump(data, json_file, ensure_ascii=False, indent=4)
    print(f"Product information saved to {filename}")

8. Faire fonctionner le Scraper

Voici la fonction principale pour démarrer le grattoir Walmart :

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()
        await page.goto(
            "https://www.walmart.com/search?q=windows+laptops",
            wait_until="domcontentloaded",
        )

        current_page = 1
        product_info_generator = await scrape_walmart(page, current_page)

        with open("walmart_products.json", "w", encoding="utf-8") as json_file:
            json_file.write("[")
            first = True
            async for product in product_info_generator:
                if not first:
                    json_file.write(",\\n")
                json.dump(product, json_file, ensure_ascii=False, indent=4)
                first = False
            json_file.write("\\n]")
            print("Product information saved to walmart_products.json")


asyncio.run(main())

Résultat final

Vous pouvez trouver le code complet pour extraire les données de Walmart à l'aide de proxys Massive dans le L'essentiel de GitHub.

Lorsque vous exécutez le code, le résultat ressemblera à ceci :

[
    {
        "title": "14.1in Windows 11 Pro Laptop, 8GB DDR4, 512GB SSD Computer, Intel Celeron, 1920x1080, 1TB Expansion, Silver",
        "product_url": "<https://www.walmart.com/ip/Temlicolo-14-1-Laptop-8GB-RAM-PC-512GB-SSD-Intel-Celeron-N4020C-up-to-2-8GHz-Windows-11-Pro-Webcam-1TB-SSD-Expansion-Silver/1519228026?classType=VARIANT&selectedSellerId=101196098&from=/search>",
        "current_price": "$227.89",
        "previous_price": "$499.99",
        "rating": "4.5",
        "num_reviews": "220",
        "shipping_info": "Free shipping, arrives in 2 days"
    },
    {
        "title": "HP Stream 14 inch Windows Laptop Intel Processor N4120 4GB RAM 64GB eMMC Pink (12-mo. Microsoft 365 included)",
        "product_url": "<https://www.walmart.com/ip/HP-Stream-14-inch-Laptop-Intel-Processor-N4102-4GB-RAM-64GB-eMMC-Pink-12-mo-Microsoft-365-included/443153637?classType=VARIANT&athbdg=L1102&from=/search>",
        "current_price": "$199.00",
        "previous_price": "$229.00",
        "rating": "4",
        "num_reviews": "11,240",
        "shipping_info": "Free pickup today\\nDelivery today\\nFree shipping, arrives today"
    },
    {
        "title": "Jumper 15.6\\" Windows 11 Laptop 4GB DDR4 128GB Rom Computer with Intel Celeron 5205U, Come with 1-Yr Free Office 365",
        "product_url": "<https://www.walmart.com/ip/Jumper-15-6-Laptop-4GB-DDR4-128GB-ROM-Computer-with-Dual-Core-Intel-Celeron-5205U-CPU-1-yr-Office-Free-1366x768-HD/9497006657?classType=VARIANT&selectedSellerId=101078354&from=/search>",
        "current_price": "$199.89",
        "previous_price": "$379.99",
        "rating": "4.2",
        "num_reviews": "6",
        "shipping_info": "Free shipping, arrives in 2 days"
    }
]

Vérifiez la version complète fichier JSON avec toutes les données des « ordinateurs portables Windows » de Walmart extraites de chaque page disponible.

Conclusion

Cet article explique comment l'utilisation de proxys Massive peut vous aider à extraire des données précieuses tout en minimisant les risques de détection et de blocage. Pour plus de détails sur la configuration du proxy ou les meilleures pratiques, consultez notre documentation officielle.

Prêt à démarrer ? Inscrivez-vous à Massive Proxies dès aujourd'hui 🚀

About the author
Jason Grad
Co-fondateur

Je suis le co-fondateur et PDG de Massive. En plus de travailler sur des startups, je suis musicienne, athlète, mentor, animatrice d'événements et bénévole.

Question fréquemment posée

+

+

+

+

+

+

+

+

+

+

Ready to test premium proxy performance?