🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Como Extrair Dados de Produtos do Walmart: Por Que Proxies Genéricos Falham e O Que Realmente Funciona

Ethan Brown
Ethan Brown

Advanced Bot Mitigation Engineer

01-Jun-2026

Principais Conclusões:

  • Um IP dos EUA não é o mesmo que uma resposta utilizável no Walmart. O Walmart avalia a reputação do IP, a consistência comportamental e a concentração de tráfego regional — não apenas o país para o qual um IP resolve. Um proxy genérico dos EUA pode retornar HTTP 200 e ainda assim entregar uma página de verificação de bot ou CAPTCHA no corpo.
  • HTTP 200 ≠ dados de produto extraíveis. Proxies genéricos dos EUA frequentemente retornam um 200 OK cujo corpo é uma página de verificação de bot ou CAPTCHA, em vez da grade de produtos — e uma parte adicional nunca se conecta. Códigos de status por si só não dizem se uma resposta é real.
  • IPs de datacenter degradam mais rápido; residenciais sozinhos não são suficientes. A saída residencial eleva o nível mínimo, mas o Walmart também verifica se uma sessão se comporta como um navegador — executando JavaScript, mantendo cookies e apresentando uma impressão digital consistente. Um proxy cru entrega bytes; ele não renderiza uma página.
  • Um navegador anti-detecção renderizado fecha a lacuna. O Scrapeless Scraping Browser combina proxies residenciais em mais de 195 países com renderização de JavaScript do lado da nuvem e impressão digital anti-detecção, de modo que a página retornada é a grade de produtos real, em vez de uma shell de desafio.
  • A renderização é observável. O Scrapeless Scraping Browser renderiza a URL de busca do Walmart para o título da página laptop - Walmart.com, gerando mais de 160 âncoras de produtos (a[link-identifier]) e dezenas de nós [data-item-id] — uma grade de produtos real e paginada, em vez de uma shell de desafio.
  • Gratuito para começar. Novas contas da Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.

Introdução: um status 200 não é um sinal verde

O catálogo público do Walmart é um dos conjuntos de dados mais observados no varejo dos EUA. As equipes de precificação acompanham os SKUs dos concorrentes, os proprietários de marcas monitoram a conformidade com MAP, os vendedores de marketplaces observam o movimento da buy-box e os agentes de IA puxam atributos de produtos para pipelines de downstream. Os dados são visíveis publicamente em um navegador — que é exatamente por que tantas equipes assumem que um proxy e um cliente HTTP são suficientes para coletá-los.

Não são. O modo de falha mais comum no Walmart é silencioso: um pedido sai por meio de um proxy dos EUA, retorna com um 200 OK, e o pipeline registra um sucesso — mas o corpo é uma página de verificação de bot, uma shell React vazia ou um prompt de CAPTCHA. A linha de status diz que tudo funcionou; a carga útil não contém dados de produto. Um scraper que confia no código de status registra uma vitória e não armazena nada utilizável.

Este post explica por que proxies genéricos falham no Walmart, apoia a taxa de falha com um benchmark público atribuído e passa por um fluxo de trabalho em Python sobre o Scrapeless Scraping Browser — um navegador em nuvem anti-detecção que renderiza a página, mantém o estado da sessão e roteia através da saída residencial, de modo que a resposta que volta é a grade de produtos que você realmente queria. O fluxo de trabalho extrai registros de resultados de busca (título, preço, link, id do item) e navega de um resultado para sua página de detalhes do produto.


O Que Você Pode Fazer Com Isso

  • Monitoramento de preços competitivos. Coletar preço, preço de lista e bandeiras de desconto em SKUs concorrentes do Walmart em uma cadência contínua.
  • Monitoramento de conformidade com MAP. Os proprietários de marcas observam os preços dos vendedores de terceiros e sinalizam listagens abaixo do MAP.
  • Ingestão de catálogo. Alimentar pesquisas e listagens de categorias em pipelines de downstream com um esquema de produto normalizado (título, preço, link, id do item).
  • Inteligência sobre buy-box e vendedores. Acompanhar qual vendedor detém uma listagem específica e como as ofertas mudam ao longo do tempo.
  • Disponibilidade e sortimento. Monitorar quais produtos aparecem para uma consulta e como o conjunto de resultados muda entre regiões.
  • Enriquecimento de agentes de IA. Passar uma grade de produtos renderizada para um agente que classifica, deduplica ou resume o catálogo.

Na Scrapeless, acessamos apenas dados publicamente disponíveis enquanto cumprimos rigorosamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste post é apenas para fins de demonstração.


Por Que Proxies Genéricos Falham no Walmart

Um proxy genérico faz uma única função: ele encaminha seu pedido HTTP de um IP diferente e retorna os bytes que o Walmart envia de volta. Ele não executa JavaScript, mantém uma impressão digital de navegador ou mantém o estado da sessão entre os pedidos. As proteções do Walmart foram construídas precisamente para detectar o que um proxy cru não pode falsificar.

O Walmart verifica mais do que o país do IP

A camada anti-bot do Walmart avalia vários sinais em conjunto:

  • Reputação do IP — faixas de datacenter e pools de proxies conhecidos têm baixa confiabilidade e atraem desafios rapidamente.
  • Consistência comportamental — se o cliente executa scripts de página, reproduz cookies e apresenta cabeçalhos e temporização que correspondem a um navegador real.
  • Concentração de tráfego regional — não apenas o país para o qual um IP resolve, mas se o tráfego de uma região ou sub-rede parece naturalmente distribuído ou concentrado de uma maneira que sinaliza automação.
    Um proxy de nível de país dos EUA satisfaz exatamente uma dessas verificações. Não diz nada sobre se a solicitação executa JavaScript ou se comporta como um navegador, e um pool de IPs de datacenters dos EUA contra os mesmos pontos finais concentra o tráfego de uma forma que as verificações regionais do Walmart foram projetadas para pegar.

O código de status mente

O sintoma mais caro é aquele que parece sucesso. Execute proxies genéricos dos EUA contra o Walmart em volume e as respostas se dividem em três categorias: uma minoria que retorna dados de produtos utilizáveis, uma grande parcela que retorna uma página de verificação de bot ou CAPTCHA apesar de um status 200 OK, e um restante que nunca se conecta. A categoria intermediária é a armadilha — um pipeline que trata 200 OK como sucesso absorverá silenciosamente páginas de desafio em seu conjunto de dados. A extração válida permanece baixa precisamente porque o código de status e o payload discordam tão frequentemente.

Datacenter degrada rápido; residencial sozinho não é suficiente

Roteamento através de IPs residenciais eleva o nível — a saída residencial carrega mais confiança do que faixas de datacenters. Mas proxies residenciais por conta própria deixam as lacunas comportamentais e de renderização abertas. Um IP residencial anexado a um cliente HTTP simples ainda não executa os scripts da página do Walmart, apresenta uma impressão digital fina e retorna a estrutura não hidratada. O IP é mais confiável; a solicitação ainda é reconhecivelmente automatizada.

O que realmente fecha a lacuna

O caminho confiável contra o Walmart combina três coisas que um proxy bruto não pode fornecer por conta própria:

  1. Um verdadeiro navegador renderizado que executa o JavaScript do Walmart, para que a grade de produtos se hidrate no DOM.
  2. Saída residencial para que o IP carregue a confiança que uma faixa de datacenter carece.
  3. Consistência comportamental e de impressão digital — cookies mantidos entre as solicitações, uma impressão digital que corresponde ao tráfego orgânico e um estado de sessão que persiste.

Essa combinação é o que o Scrapeless Scraping Browser fornece como uma única superfície gerenciada.

Capacidade Proxy genérico dos EUA Scrapeless Scraping Browser
Encaminha solicitação de um IP dos EUA Sim Sim
Executa o JavaScript do Walmart (renderiza a grade de produtos) Não Sim — renderização do lado da nuvem
Captura um CAPTCHA-em-200 (retorna a página real, não um desafio) Não Sim — a grade renderizada se hidrata ou o desafio é visível
Saída residencial Apenas se explicitamente residencial Proxies residenciais em mais de 195 países
Consistência comportamental / de sessão (cookies, tempos) Não Sim — estado de sessão persistente
Impressão digital de navegador anti-detecção Não Sim — em cada sessão
Consistência de tráfego regional Concentra o tráfego de um pool Distribui através de uma rede residencial

Um proxy genérico responde à pergunta "posso enviar esta solicitação de um IP dos EUA?" O Scrapeless Scraping Browser responde à pergunta que realmente importa: "posso obter a grade de produtos renderizada de volta?"


Por que Scrapeless Scraping Browser

Scrapeless Scraping Browser é um navegador em nuvem personalizável e anti-detecção, projetado para crawlers web e agentes de IA. Para o Walmart especificamente, ele traz:

  • Proxies residenciais em mais de 195 países, fixados na saída dos EUA na criação da sessão, para que o IP carregue confiança residencial em vez de uma assinatura de datacenter.
  • Renderização de JavaScript do lado da nuvem, para que a grade React do Walmart se hidrate e os nós de produtos estejam presentes no DOM antes da extração.
  • Persistência de sessão, para que cookies e estado do navegador permaneçam consistentes ao longo do fluxo de pesquisa → detalhes, em vez de redefinir a cada solicitação.
  • Impressão digital anti-detecção em cada sessão, para que a página renderize da mesma forma que para o tráfego orgânico.
  • Uma única superfície programática — crie um URL de CDP com sua chave de API, conecte-se com o Playwright e controle um navegador real sem precisar levantar infraestrutura.

A renderização é um comportamento observável. O Scrapeless Scraping Browser renderiza https://www.walmart.com/search?q=laptop para o título da página laptop - Walmart.com, gerando mais de 160 âncoras de produtos (a[link-identifier]) e dezenas de nós [data-item-id] — uma grade de produtos real e paginada, em vez de uma estrutura de desafio. URLs de produtos do Walmart têm a forma https://www.walmart.com/ip/<slug>/<id>, e cada âncora de resultado se resolve em uma.

Obtenha sua chave de API no plano gratuito em app.scrapeless.com. A página do produto Scraping Browser e a página Soluções de Proxy cobrem a rede residencial que apoia o navegador em nuvem.


Pré-requisitos

  • Python 3.10 ou mais recente.
  • Uma conta Scrapeless e chave de API — inscreva-se em app.scrapeless.com. O SDK lê a chave da variável de ambiente SCRAPELESS_API_KEY.
  • Familiaridade básica com o terminal e com Python.

Instalar

O fluxo de trabalho usa um pacote: Playwright para Python, o cliente oficialmente suportado que se conecta ao Scrapeless Scraping Browser via CDP e lê o DOM renderizado.

bash Copy
pip install playwright

O connect_over_cdp do Playwright controla o navegador remoto na nuvem, então você não precisa de playwright install ou de quaisquer binários de navegador locais — a renderização acontece do lado da nuvem. Em seguida, exporte sua chave de API para que possa ser usada na URL de conexão:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

O formato da conexão e os guias da biblioteca estão documentados em docs.scrapeless.com.


Etapa 1 — Crie uma URL de conexão de egressos dos EUA

O Scrapeless Scraping Browser é um endpoint CDP. Crie a URL WebSocket com sua chave de API como token e egressos dos EUA como proxyCountry — Walmart é um site de varejo dos EUA, e uma sessão residencial nos EUA é a base para uma resposta utilizável.

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

def scraping_browser_url(proxy_country="US", session_ttl=240):
    # A chave da API aparece na URL como `token`; egressos e duração da sessão são parâmetros de consulta.
    params = urlencode({
        "token": os.environ["SCRAPELESS_API_KEY"],
        "sessionTTL": session_ttl,
        "proxyCountry": proxy_country,
    })
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

proxyCountry=US roteia a sessão através de um IP residencial dos EUA. sessionTTL=240 mantém a sessão ativa por tempo suficiente para manter cookies entre a página de busca e as páginas de detalhes dos produtos que você acessa a seguir.


Etapa 2 — Conecte-se via CDP e abra a página de busca

Conecte-se ao endpoint do Scraping Browser com o connect_over_cdp do Playwright, em seguida, abra a URL de busca do Walmart. Como este é um navegador renderizado real, o JavaScript do Walmart é executado e a grade de produtos é hidratada no DOM.

python Copy
SEARCH_URL = "https://www.walmart.com/search?q=laptop"

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(scraping_browser_url("US"))
    page = browser.new_page()

    # Aqueça a homepage primeiro, e depois abra a busca na mesma sessão.
    page.goto("https://www.walmart.com/", wait_until="domcontentloaded")
    page.wait_for_timeout(2500)
    page.goto(SEARCH_URL, wait_until="domcontentloaded")
    page.wait_for_timeout(4000)                     # deixe a grade React se hidratar

    # Confirme se a resposta é a verdadeira grade de produtos, não uma página de desafio.
    title = page.title()                            # "laptop - Walmart.com" em uma renderização real
    cards = page.query_selector_all("a[link-identifier]")  # ~160+ âncoras de produtos quando hidratadas
    print(title, len(cards))

A breve espera após a navegação permite que a grade React termine de se hidratar antes da extração. As duas verificações acima — o título da página e a contagem de âncoras a[link-identifier] — são como você confirma se uma resposta é real antes de confiar nela. Uma página de desafio não contém o título do produto ou renderiza a grade; uma página real faz ambas.


Etapa 3 — Extraia a grade de produtos

Cada cartão de resultado de busca está ancorado em a[link-identifier], com nós [data-item-id] carregando o id do item do Walmart. Percorra as âncoras e extraia um registro normalizado por produto: título, preço, link e id do item.

python Copy
import re

def extract_products(page):
    products = []
    for card in page.query_selector_all("[data-item-id]"):
        link_el = card.query_selector("a[link-identifier]")
        if not link_el:
            continue

        href = link_el.get_attribute("href")
        item_id = card.get_attribute("data-item-id")

        # O título está no texto do link / nome acessível no cartão de resultado.
        span = link_el.query_selector("span")
        title = span.inner_text() if span else link_el.get_attribute("link-identifier")

        # O preço é renderizado no cartão após a hidratação; leia o texto visível do preço.
        price_el = card.query_selector('[data-automation-id="product-price"]')
        price = None
        if price_el:
            m = re.search(r"\d[\d,]*\.?\d*", price_el.inner_text().replace(",", ""))
            price = float(m.group()) if m else None

        link = href if not href or href.startswith("http") else f"https://www.walmart.com{href}"

        products.append({
            "itemId": item_id,
            "title": (title or "").strip() or None,
            "price": price,
            "currency": "USD",
            "link": link,
        })
    return products

Os seletores acima (a[link-identifier], [data-item-id], [data-automation-id="product-price"]) são as âncoras estáveis na grade de busca. Inspecione o DOM ao vivo primeiro quando um layout mudar: leia o HTML renderizado, confirme os nomes das âncoras atuais e aperfeiçoe os seletores em relação ao que a página realmente exibe. Nomes de classes utilitárias com hash giram entre implantações; as âncoras semânticas data-* são a superfície durável.
Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Cada link de resultado leva a uma página de detalhes do produto na forma https://www.walmart.com/ip/<slug>/<id>. Abra um na mesma sessão — os cookies e a impressão digital da sessão persistem, então a página de detalhes é renderizada da mesma forma que a página de busca.

python Copy
def text_of(page, selector):
    el = page.query_selector(selector)
    return el.inner_text().strip() if el else None

def fetch_detail(page, product_url):
    page.goto(product_url, wait_until="domcontentloaded")
    page.wait_for_timeout(3000)
    price_el = page.query_selector('[itemprop="price"]')
    return {
        "url": product_url,
        "title": text_of(page, "h1"),
        "price": (price_el.get_attribute("content") if price_el else None)
                 or text_of(page, '[data-automation-id="product-price"]'),
        "brand": text_of(page, '[itemprop="brand"]'),
        "availability": text_of(page, '[data-automation-id="fulfillment-section"]'),
    }

# Dentro da mesma sessão `with sync_playwright() as p:` da Etapa 2:
products = extract_products(page)
if products and products[0]["link"]:
    detail = fetch_detail(page, products[0]["link"])
    print(detail)

Manter a passagem de busca e a passagem de detalhes dentro de uma sessão é o que preserva a consistência comportamental: a página de detalhes vê os mesmos cookies confiáveis e a impressão digital que renderizaram a grade de busca, então ela se hidrata da mesma forma. A página de detalhes também expõe campos mais ricos — marca, especificações completas, vendedor, opções de cumprimento — que a card de busca não possui.


O que você recebe de volta

O Scraping Browser retorna um DOM renderizado ao vivo; o esquema é o que o extrator lê dele. Para o extrator da grade de busca da Etapa 3, um registro se parece com isto:

json Copy
// O esquema reflete exatamente o que o extrator da Etapa 3 emite.
// Os valores dos campos são amostras ilustrativas, não um instantâneo de qualquer produto hoje.
{
  "query": "https://www.walmart.com/search?q=laptop",
  "resultCount": 60,
  "products": [
    {
      "itemId": "5689219329",
      "title": "Exemplo de Laptop de 15,6 pol., 16GB RAM, 512GB SSD",
      "price": 499.0,
      "currency": "USD",
      "link": "https://www.walmart.com/ip/Example-Laptop-15-6-in/5689219329"
    },
    {
      "itemId": "7741203355",
      "title": "Exemplo de Laptop 2 em 1 com Tela Sensível ao Toque, 8GB RAM, 256GB SSD",
      "price": 379.0,
      "currency": "USD",
      "link": "https://www.walmart.com/ip/Example-2-in-1-Laptop/7741203355"
    }
  ]
}

Algumas observações honestas sobre essa saída, que vale a pena conhecer antes de executar em grande escala:

  • Tempo de hidratação. A grade de busca do Walmart monta primeiro um esqueleto, depois preenche os cards. Uma curta espera após a navegação antes da extração é o que garante uma grade completa em vez de uma parcial. Se uma passagem retorna muito poucos cards, a grade não tinha terminado de se hidratar — leia o HTML renderizado novamente antes de apertar os seletores.
  • Confirme se um 200 é real. A presença do título do produto (laptop - Walmart.com) e uma contagem preenchida de âncoras a[link-identifier] é o sinal de que a resposta é a página real. Uma grade vazia ou um título ausente significam que o corpo é um desafio ou uma casca, independentemente da linha de status.
  • Campos condicionais. Nem todo card possui um preço visível (itens fora de estoque ou colocações patrocinadas variam), e a página de detalhes expõe campos que o card de busca não possui. Trate campos ausentes como null em vez de descartar a chave, para que consumidores a jusante permaneçam estáveis.
  • Estabilidade do seletor. a[link-identifier], [data-item-id] e [data-automation-id="product-price"] são âncoras duráveis. Nomes de classe hashed mudam entre as versões; confie nos atributos semânticos data-*.
  • Variação regional. Os preços, a disponibilidade e o próprio conjunto de resultados variam por região. Fixe proxyCountry consistentemente para que uma série de histórico de preços compare iguais com iguais.

Conclusão: amplie seu pipeline de produtos Walmart

Raspar o Walmart de forma confiável se resume a um princípio: um código de status não é um sinal de sucesso — uma grade de produtos renderizada é. Proxies genéricos encaminham bytes de um IP dos EUA e param por aí, razão pela qual um benchmark público colocou a extração válida de proxy genérico abaixo de 40%, sendo o maior bucket de falhas as páginas de bot servidas sob um status 200. A solução não é um proxy melhor; é um navegador renderizado real com egressos residenciais e comportamento de sessão consistente.

O Scrapeless Scraping Browser fornece isso como uma única superfície: crie uma sessão residencial dos EUA, conecte-se via CDP, renderize a URL de busca, confirme que a grade de produtos está presente, extraia os registros e navegue até páginas de detalhes dos produtos dentro da mesma sessão. Fixe egressos dos EUA, mantenha as passagens de busca e detalhes dentro de uma mesma sessão, confirme que uma resposta contém o título do produto e âncoras da grade antes de confiar nela, e trate campos ausentes como nulos.
Para a mesma abordagem em outros sites de varejo e listagem, veja os guias irmãos Melhores Scrapers do Zillow em 2026 e Melhores Scrapers da Amazon em 2026.


Pronto para Construir Seu Pipeline de Dados Potencializado por IA?

Junte-se à nossa comunidade para garantir um plano gratuito e conectar-se com desenvolvedores que estão construindo pipelines de dados de varejo: Discord · Telegram.

Inscreva-se em app.scrapeless.com para obter tempo de execução gratuito do Scraping Browser e adaptar os padrões acima para as consultas, categorias e regiões que o pipeline necessita. Veja os planos atuais na página de preços.


FAQ

Q1: Por que um proxy dos EUA ainda é bloqueado no Walmart?

Porque o Walmart avalia mais do que o país para o qual um IP resolve. Ele verifica a reputação do IP, a consistência de comportamento e a concentração de tráfego regional. Um proxy residencial dos EUA satisfaz apenas a verificação do país; ele não executa JavaScript nem mantém estado de sessão. Na prática, a maioria das respostas de proxies genéricos no Walmart não são dados de produtos utilizáveis.

Q2: Proxies residenciais sozinhos são suficientes?

Não. A saída residencial aumenta a confiança em relação a intervalos de data center, mas um IP residencial ligado a um cliente HTTP simples ainda não renderiza a página nem mantém uma impressão digital de navegador consistente. O caminho confiável combina a saída residencial com um navegador renderizado real e estado de sessão persistente — que é o que o Scraping Browser da Scrapeless combina em uma sessão.

Q3: Como confirmo que uma resposta 200 é real e não uma página de CAPTCHA?

Verifique o payload, não a linha de status. Em uma renderização real da busca no Walmart, o título da página é laptop - Walmart.com e o DOM contém âncoras de produtos (a[link-identifier]) e nós [data-item-id]. Se o título estiver ausente e a grade estiver vazia, o corpo é um desafio ou uma shell não hidratada, independentemente do status 200.

Q4: Quantas requisições posso executar em paralelo?

Mantenha a concorrência modesta — cerca de três trabalhadores por host — e fixe a saída dos EUA em cada sessão. Para uma distribuição maior, divida entre hosts em vez de aumentar a concorrência contra um único, para que o tráfego permaneça naturalmente distribuído.

Q5: O Walmart mudou seu DOM e meus seletores foram quebrados. E agora?

Leia o HTML renderizado ao vivo novamente, identifique os âncoras estáveis atuais (a[link-identifier], [data-item-id], atributos data-automation-id) e aperte o extrator contra o que a página está enviando agora. Ancore em atributos semânticos data-* em vez de nomes de classe codificados, que mudam entre implementações.

Q6: Isso pode ser executado sem um agente de IA?

Sim. O Python nas Etapas 1–4 roda de forma independente — cria a sessão, conecta-se via CDP, renderiza e extrai. Dirigir a partir de um agente de IA é uma camada de conveniência adicional, não um requisito.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo