Table of Contents

Extração de dados de produtos do Walmart usando o Massive

Jason Grad
Proxy Network Manager
March 4, 2025
Table of Contents

+

O Walmart fornece uma vasta coleção de dados de produtos por meio de seu site Walmart, que é um recurso valioso para empresas, pesquisadores e profissionais de marketing. Esteja você acessando uma única página de produto do Walmart ou navegando por várias páginas do Walmart, coletar informações relevantes pode ser um desafio devido às fortes medidas anti-raspagem do Walmart.

Este artigo explicará como os proxies Massive tornam mais fácil contornar essas restrições e permitem que você colete detalhes de produtos do Walmart em locais específicos.

Vamos mergulhar!

Casos de uso comuns para dados de produtos do Walmart

O site do Walmart contém informações valiosas que podem ser usadas para várias finalidades, incluindo:

  • Pesquisa de produto e mercado: Analise os pontos de dados de cada página de produto do Walmart, incluindo avaliações e classificações, para entender as preferências do consumidor e as tendências do mercado.
  • Análise da concorrência: Obtenha informações sobre preços e estratégias de produtos da concorrência
  • Monitoramento e otimização de preços: Acompanhe os preços em tempo real para ajustar as estratégias de preços e se manter competitivo.
  • Gerenciamento de inventário: Monitore os níveis de estoque e a disponibilidade do produto para otimizar as operações de estoque e da cadeia de suprimentos.

Por que usar proxies na captura de dados na Web

Os proxies desempenham um papel crucial na captura da web, servindo como intermediários entre o raspador e o site de destino. Eles oferecem vários benefícios importantes, incluindo:

  1. Evitando proibições de IP: Os proxies permitem que você alterne os endereços IP, o que reduz o risco de detecção e bloqueio pelo site.
  2. Acessando conteúdo com restrição geográfica: Alguns conteúdos ou produtos estão disponíveis somente em determinadas regiões. Os proxies permitem que você apareça como se estivesse navegando de um local diferente.
  3. Ignorando limites de taxa: Os sites geralmente impõem limites ao número de solicitações de um único endereço IP. Os proxies ajudam a distribuir suas solicitações em vários IPs, permitindo que você evite essas restrições.

Compreendendo as medidas anti-raspagem do Walmart

A coleta de dados do Walmart pode ser um desafio devido às várias proteções em vigor. Aqui estão alguns problemas comuns que você pode enfrentar:

  1. Desafios do CAPTCHA: O Walmart usa CAPTCHAs para bloquear bots. Embora sejam relativamente fáceis de resolver por humanos, podem ser difíceis para scripts automatizados.
  2. Limitação de taxa: O Walmart restringe o número de solicitações que você pode fazer em um curto período. Se você exceder esse limite, seu acesso poderá ser bloqueado.
  3. Bloqueio de IP: Se o Walmart detectar atividade excessiva de captura de um único endereço IP, poderá bloquear esse IP.
  4. Alterando o layout da página: O Walmart atualiza frequentemente a estrutura de suas páginas da web. Essas alterações podem quebrar seu código de captura, exigindo que você o atualize regularmente.
  5. Conteúdo dinâmico: A página de pesquisa do Walmart e outras páginas do Walmart usam JavaScript para carregar conteúdo dinamicamente, o que pode tornar a captura mais complexa.

Por exemplo, criei um script para coletar dados de várias páginas de produtos no Walmart. No entanto, meu raspador acabou sendo bloqueado pelo sistema de detecção de bots do Walmart, como você pode ver na imagem abaixo.

Esse desafio, que exige que eu “pressione e segure” para verificar minha humanidade, é um mecanismo CAPTCHA comum usado por sites para impedir que bots acessem seu conteúdo.

Nesse ponto, meu raspador não conseguia mais acessar os dados, o que era frustrante e demorado. Mas não se preocupe, existe uma solução. Vamos explorar como Proxies residenciais Massive pode ajudá-lo a coletar dados de produtos do Walmart.

Proxies residenciais versus de data center para coleta de dados no Walmart: o que funciona melhor

Estou vasculhando o Walmart há algum tempo, e sua escolha de procuração faz toda a diferença. Pela minha experiência, os proxies residenciais valem o custo extra. Eles usam IPs reais atribuídos por ISPs reais aos proprietários; portanto, para os sistemas do Walmart, você parece um comprador normal navegando de casa. Sim, custa mais, mas a qualidade dos dados e as sessões de coleta ininterruptas fazem com que valha a pena.

Os proxies de data center são tentadores — são mais rápidos e baratos — mas os sistemas anti-bot do Walmart se tornaram muito bons em identificá-los.

Benefícios do uso de proxies Massive para a raspagem do Walmart

Proxies residenciais Massive oferecem vários benefícios importantes:

  1. 🌐 Alcance global: Acesse mais de 195 países — cidades alvo, códigos postais ou ASN
  2. 🔒 Anonimato: Milhões de IPs rotativos e rotação personalizável (por solicitação ou de 1 a 60 minutos)
  3. ⚡ Velocidade e confiabilidade: Taxa de sucesso de 99,8%, tempos de resposta de <0,7 s e tempo de atividade de 99,9%
  4. 💰 Econômico: A partir de 4,49 USD/GB com planos escaláveis
  5. ✅ Eticamente compatível: Proxies totalmente compatíveis com GDPR/CCPA, 100% de origem ética
  6. 🛠️ Suporte: Via Slack, Skype, e-mail ou tickets

Começando com o Massive

Se você é novo no Massive, inscreva-se em uma conta. Escolha um plano para suas necessidades.

Nota: Nós oferecemos um Teste gratuito de 2 GB para empresas. Para começar, preencha este formulário. Se você precisar de mais largura de banda, entre em contato com nossa equipe de vendas, e nós o ajudaremos.

Depois de se inscrever, acesse o Painel enorme para recuperar suas credenciais de proxy (nome de usuário e senha).

Etapas de configuração:

Visite o Início rápido seção para personalizar suas configurações de proxy:

  • Escolha seu protocolo preferido (HTTP, HTTPS ou SOCKS5)
  • Selecione entre proxies rotativos ou fixos
  • Defina preferências de segmentação geográfica (país, estado, cidade ou CEP)

Depois de configurado, você receberá um comando cURL pronto para uso para seu caso de uso específico.

Para recursos avançados, como segmentação com base em localização e sessões fixas, consulte o Documentação Massive. Os documentos fornecem instruções passo a passo para tirar o máximo proveito dos Massive Residential Proxies.

Com essa configuração, você pode usar Massive Proxies para coletar dados de produtos do Walmart da região específica.

Construindo o Walmart Scraper com Python e proxies Massive

Embora você possa usar uma API de raspagem do Walmart, criar sua própria solução com a configuração adequada do agente de usuário oferece mais controle sobre o processo de raspagem. Vamos explorar como criar um raspador Python para dados de produtos do Walmart usando proxies Massive e Playwright. O Playwright ajuda a automatizar as ações do navegador e a lidar com conteúdo dinâmico, como carregar mais produtos à medida que você navega.

Usando Maciço proxies, você pode coletar dados do Walmart de qualquer local onde o Walmart opera, simplesmente alterando as configurações de proxy. Neste tutorial, mostraremos a coleta de dados do produto em Washington, EUA.

Extrairemos os seguintes dados para cada produto do Walmart: nome do produto, classificação, número de avaliações, preço, preço anterior (se disponível), informações de envio e link do produto.

1. Configure seu ambiente Python

Para começar, certifique-se de ter o Python instalado em sua máquina. Em seguida, instale o Playwright e os binários necessários do navegador:

pip install playwright
playwright install

2. Importar bibliotecas necessárias

Agora, vamos começar a escrever o roteiro. Você precisará importar as seguintes bibliotecas:

  • assíncio para programação assíncrona.
  • aleatória para adicionar atrasos aleatórios.
  • json para salvar nossos dados coletados.
  • async_playwright do Playwright para controlar o navegador e automatizar a captura.
import asyncio
import random
import json
from playwright.async_api import async_playwright

3. Inicie o navegador com configurações Massive de proxy

Inicie o navegador Chromium no modo headless com configurações de proxy. Isso permite que você ignore as medidas anti-raspagem do Walmart usando Maciço proxies.

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",
        ],
    )

Em seguida, configure o contexto do navegador para direcionar o tráfego Maciço proxies residenciais:

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},
)

Abra uma nova página e navegue até os resultados de pesquisa do Walmart:

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

Esse código direcionará o navegador para a página de resultados de pesquisa do Walmart para “laptops Windows”.

4. Rolar e extrair dados

Como o Walmart carrega mais produtos à medida que você rola, simularemos a rolagem semelhante à humana para garantir que todos os produtos sejam carregados:

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. Extrair informações do produto

Agora, extraímos detalhes como nome do produto, preço e classificações usando seletores CSS. Veja como você pode extrair cada informação:

A. Nome do produto:

Trecho de código:

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. Preço atual:

Trecho de código:

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. Preço anterior:

Trecho de código:

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

D. Classificação do produto:

Trecho de código:

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

E. Número de avaliações:

Trecho de código:

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. Informações de envio:

Trecho de código:

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"

Aqui está o código combinado que retorna todas as informações de cada produto.

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. Raspe várias páginas

Para raspar várias páginas, localizaremos o botão “Próxima página” e clicaremos em cada uma

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. Salvar os dados em um arquivo JSON

Depois que todos os dados forem extraídos, salve-os em um arquivo 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. Executando o raspador

Aqui está a principal função para iniciar o raspador do 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())

Resultado final

Você pode encontrar o código completo para coletar dados do Walmart usando proxies Massive no GitHub Gist.

Quando você executa o código, o resultado será mais ou menos assim:

[
    {
        "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"
    }
]

Confira o completo Arquivo JSON com todos os dados do Walmart “laptop Windows” extraídos de todas as páginas disponíveis.

Encerrando

Este artigo discutiu como o uso de proxies Massive ssivede ajudar você a extrair dados valiosos e, ao mesmo tempo, minimizar o risco de detecção e bloqueio. Para obter mais detalhes sobre a configuração do proxy ou as melhores práticas, não deixe de visitar nosso documentação oficial.

Pronto para começar? Inscreva-se hoje mesmo no Massive Proxies 🚀

FAQ

+

+

+

+

+

+

+

+

+

+

Discover your ideal proxy

Loading...