---
title: "Парсинг Walmart: сбор данных на Python и настройка прокси"
description: Как собирать цены, отзывы и другие данные Walmart с помощью Python. Разбираем поиск товаров, извлечение JSON и настройку прокси для снижения риска блокировок.
---

[Блог Froxy | Новости, полезные статьи о использовании прокси](https://blog.froxy.com/ru)

# [Парсинг Walmart: сбор данных на Python и настройка прокси](https://blog.froxy.com/ru/walmart-scraping)

 Written by [Команда Froxy](https://blog.froxy.com/ru/author/team-froxy) | 13 окт. 2026 г., 07:00:01

Walmart — это крупнейшая сеть розничных и оптовых магазинов в США. У неё есть точки продаж ещё в 18 странах, и она пользуется бешеной популярностью из-за минимальных цен и исчерпывающего ассортимента. Компания продаёт буквально всё: от продуктов питания до бытовой техники и электроники. В феврале 2026 года рыночная капитализация Walmart впервые превысила 1 триллион долларов. Неудивительно, что официальный сайт Walmart пытаются пропарсить в поисках полезной для бизнеса информации: для мониторинга цен, анализа отзывов, поиска выгодных поставщиков, выявления товаров, пользующихся особым спросом, и т. п.

Итак, этот материал про парсинг данных Walmart: разрешает ли Walmart веб-скрейпинг, как он защищается от ботов, какие способы обхода существуют, как извлекать информацию о товарах и т. п.

## TL;DR

Актуальная версия сайта Walmart построена на фреймворке Next.js. То есть сайт написан на JavaScript, и конечная версия HTML-кода рендерится непосредственно в браузере.

Тем не менее содержимое страниц передаётся браузеру в структурированном виде, в формате JSON. То есть, если найти нужный блок данных, информацию даже не придётся разбирать с помощью синтаксических анализаторов, таких как [Beautiful Soup](https://blog.froxy.com/ru/scrape-with-beautiful-soup?hsLang=ru). В случае с Walmart данные нужно искать в теге \<script id="\_\_NEXT\_DATA\_\_"\>.

С другой стороны, сайт хорошо защищён от ботов, поэтому для масштабного сбора данных понадобятся качественные прокси и правдоподобная браузерная среда. Они нужны для создания убедительных пользовательских профилей и [цифровых отпечатков](https://blog.froxy.com/ru/browser-fingerprinting?hsLang=ru).

## Зачем парсить Walmart

Причины для автоматического веб-парсинга Walmart стандартные и совпадают с задачами анализа других крупных интернет-площадок:

- Мониторинг цен и динамики скидок. Причём в привязке не только к стране или штату, но и к конкретному магазину, так как политика ценообразования в Walmart очень гибкая.
- Анализ рынка и конкурентная разведка: сравнение ассортимента, спроса, сезонности, маркетинговых акций и т. п.
- Анализ отзывов и рейтингов по товарам и сегментам с выделением тональности и общего настроя пользователей.
- Выявление слабых позиций конкурентов для усиления своих: по наличию товаров, по цене, по качеству и пр.
- Обучение языковых моделей.
- Наполнение своих сайтов.

Какой бы ни была причина, техническая реализация везде будет плюс-минус одинаковой. Но сначала о юридической стороне вопроса.

## Что можно и чего нельзя: легальность и этика парсинга Walmart

В правилах пользования сайтом (Terms of Use) в актуальной версии от 9 сентября 2026 года прямо запрещены автоматическое извлечение данных (скрапинг) и использование ботов. Запрещены даже ручные инструменты для извлечения информации. Сами данные нельзя скачивать, хранить, систематизировать и использовать для обучения ML-моделей.

При этом публичная доступность страниц ещё не отвечает на вопрос, разрешает ли Walmart парсинг. Нужно учитывать условия использования, юрисдикцию, цель сбора и то, как вы будете использовать данные дальше.

Как мы уже не раз говорили, юридические риски чаще связаны с нелегитимным использованием собранных данных, а не с самим сбором. Соблюдайте разумную нагрузку (частоту запросов), не собирайте персональные данные, учитывайте авторские права на контент и правила в файле robots.txt. Этот материал носит технический характер и не является юридической консультацией.

**Важный момент:** у Walmart нет публичного API для товаров, отсюда такая острая потребность в скрейпинге. Непубличный API предоставляется только партнёрам и селлерам, но в нём всё равно нет функционала для анализа чужих продуктов и сбора данных по категориям.

## Как устроен Walmart изнутри (что нужно понять до кода)

Технически для сбора данных веб-страницы Walmart даже не обязательно рендерить в браузере. Информация доступна в виде JSON внутри кода страницы. В частности, основное содержимое страницы можно найти в теге:

\<script id="\_\_NEXT\_DATA\_\_" type="application/json"\>

Вместо автоматического обхода страниц сайта для составления структуры будущего парсинга можно воспользоваться XML-картами сайта (sitemap), ссылки на которые есть в robots.txt. Для категорий особенно интересна карта sitemap\_category.xml.

Поиск и точечную настройку фильтров можно реализовать через параметры в URL. Например:

https://www.walmart.com/search?q=computer&typeahead=computer&min\_price=30&max\_price=910&sort=price\_low

Подходы можно комбинировать: URL из XML-карт можно ставить на массовый обход краулера, а внутри страниц товаров данные собирать через JSON.

## Как парсить страницы поиска

Наиболее частый практический вопрос: как найти все URL товаров Walmart для парсинга? Разберём поисковый запрос из примера выше:

https://www.walmart.com/search?q=computer&typeahead=computer&min\_price=30&max\_price=910&sort=price\_low

Внутри URL-параметров зашита вся необходимая информация о поиске и фильтрации:

- q=computer — искомое слово или фраза;
- min\_price=30 — стоимость от 30 долларов;
- max\_price=910 — до 910 долларов;
- sort=price\_low — сортировка по возрастанию цены.

Если вам нужна пагинация, достаточно добавить параметр page. Например:

https://www.walmart.com/search?q=computer&typeahead=computer&min\_price=30&max\_price=910&sort=price\_low&page=2

**Важное уточнение:** Walmart отдаёт максимум 25 страниц независимо от общего числа результатов поиска. Поэтому простой пагинацией ВСЕ товары по запросу не собрать.

Обойти ограничение помогают фильтры: они сужают выдачу, и каждая выборка укладывается в лимит. У многих категорий в Walmart есть набор собственных фильтров. Они тоже участвуют в построении результирующего URL. Например, если отметить опцию фильтра для компьютеров с видеокартой Nvidia GeForce RTX 2060, то URL с запросом будет выглядеть так:

…search?q=computer&typeahead=computer&min\_price=30&max\_price=910&sort=price\_low&affinityOverride=default&facet=graphics\_processor%3ANVIDIA+GeForce+RTX+2060

Чтобы увеличить охват, разбивайте большие выборки по категориям или ценовым диапазонам и комбинируйте сортировку по возрастанию и по убыванию цены.

Так как страницы с результатами поиска тоже отдают данные в JSON, их не нужно разбирать с помощью синтаксических анализаторов. Что не может не радовать.

Достаточно достать содержимое полей из JSON в теге \_\_NEXT\_DATA\_\_. Ядро логики выглядит так:

```
from typing import Dict, List, Tuple
import json
from parsel import Selector

def parse_search(html_text: str) -> Tuple[List[Dict], int]:
    """extract search results from search HTML response"""
    sel = Selector(text=html_text)
    data = sel.xpath('//script[@id="__NEXT_DATA__"]/text()').get()
    data = json.loads(data)

    stacks = data["props"]["pageProps"]["initialData"]["searchResult"]["itemStacks"]
    stack = next(s for s in stacks if s.get("stackType") == "DEFAULT")

    total_results = stack["count"]
    results = [i for i in stack["items"] if i.get("__typename") == "Product"]
    return results, total_results
```

Это только ядро логики. На практике массив товаров нужно обходить циклом, данные нормализовывать, а потом сохранять в новом формате, например в таблицу CSV.

```
import re

name = item.get("name")
price = item.get("price")
description = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", item.get("description") or "")).strip()
```

## Как парсить карточку товара

Парсинг товаров Walmart строится по тем же принципам, что и парсинг поиска, только без циклов: товар-то всего один на странице.

Данные тоже хранятся в \_\_NEXT\_DATA\_\_. Но так как полей очень много, нужен точный фильтр по конкретным ключам. Например, основными полями можно назвать: name, brand, priceString или price, availabilityStatus, averageRating и т. д.

Обратите внимание на количество и структуру полей с названием name:

Вот пример кода:

```
import json
import re
from parsel import Selector

def parse_item(html_text: str) -> dict:
    """Извлекает ключевые данные о товаре со страницы PDP."""
    sel = Selector(text=html_text)
    raw = sel.xpath('//script[@id="__NEXT_DATA__"]/text()').get()
    data = json.loads(raw)

    # Ядро — путь до product на item page
    product = data["props"]["pageProps"]["initialData"]["data"]["product"]
    reviews = data["props"]["pageProps"]["initialData"]["data"]["reviews"]

    price_info = product["priceInfo"]["currentPrice"]
    was_price = product["priceInfo"].get("wasPrice") or {}
    seller = product.get("sellerName")
    availability = product.get("availabilityStatusV2", {}).get("display")

    # Описание: длинное (BTF) или короткое (с HTML-тегами) — чистим
    long_desc = product.get("longDescription") or ""
    short_desc = product.get("shortDescription") or ""
    description = _clean(long_desc or short_desc)

    return {
        "name": product.get("name"),
        "brand": product.get("brand"),
        "us_item_id": product.get("usItemId"),
        "seller": seller,
        "price": price_info.get("price"),
        "price_string": price_info.get("priceString"),
        "was_price": was_price.get("price"),
        "availability": availability,
        "rating": reviews.get("averageOverallRating"),
        "reviews_count": reviews.get("totalReviewCount"),
        "description": description,
    }

def _clean(html: str) -> str:
    """Убирает HTML-теги и нормализует пробелы."""
    text = re.sub(r"<[^>]+>", " ", html)
    return re.sub(r"\s+", " ", text).strip()

if __name__ == "__main__":
    with open("item.html", encoding="utf-8") as f:
        html = f.read()

    item = parse_item(html)
    # Выводим данные в консоль
    for k, v in item.items():
        print(f"{k}: {v}")
```

## Главная проблема: антибот Walmart

Все данные, которые мы описывали выше, можно получить без headless-браузеров: достаточно задействовать любой HTTP-клиент. [Список из 8 лучших HTTP-клиентов для Python в 2026 году](https://blog.froxy.com/ru/python-http-clients-for-web-scraping?hsLang=ru).

Грубо говоря, данные уже есть внутри HTTP-ответа сервера. Просто они структурированы не в виде HTML, а содержатся внутри JSON-структуры на уровне всего одного тега со скриптом (это огромная строка сплошного кода).

Однако, если вы запланируете масштабный веб-парсинг Walmart, то столкнётесь с другой проблемой: сервис активно защищается от ботов, применяя продвинутые технологии:

- Анализ IP-адресов: [серверные прокси](https://blog.froxy.com/ru/datacenter-proxies?hsLang=ru) с низким трастом могут не подойти.
- Анализ цифровых отпечатков и браузерных профилей (заголовки, TLS/JA3 и т. п.).
- Отпечатки JS-окружения.
- Анализ частоты запросов.

[Подробнее о цифровых отпечатках](https://blog.froxy.com/ru/fingerprinting-and-web-scraping-connection?hsLang=ru).

За защиту в Walmart отвечают топовые системы: Akamai и PerimeterX (ныне HUMAN Security).

Признаки того, что вашего бота раскусили: частый показ CAPTCHA, редирект на страницу блокировки, ошибки доступа (например, 403 Forbidden) или просто пустые ответы сервера.

Если вы уже столкнулись с банами от Walmart, пора задуматься о качественных ротируемых прокси с высоким уровнем доверия, а также об использовании headless-браузеров и имитации правдоподобных пользовательских профилей.

[Подробнее о headless-браузерах](https://blog.froxy.com/ru/headless-browser-what-is-it-and-how-to-use-it-for-scraping?hsLang=ru).

###### Резидентные прокси для парсинга Walmart

Ротируемые резидентные IP с таргетингом по городам США помогают собирать цены и отзывы Walmart с меньшим риском блокировок.

[Попробовать](https://froxy.com/ru/residential-proxies) $1.99, 100Mb

## Что реально снижает вероятность блокировки со стороны Walmart

Разбираемся, как снизить риск блокировки при парсинге Walmart. Принцип простой, но реализация требует внимательности и глубокого понимания процесса.

Во-первых, нужно работать с куками и токенами. А для этого как нельзя лучше подходят реальные браузеры. Автоматизировать управление браузерами можно через специальные инструменты:

- [Selenium](https://blog.froxy.com/ru/selenium-proxy?hsLang=ru)
- [Playwright](https://blog.froxy.com/ru/web-scraping-with-playwright?hsLang=ru)

Для них можно задать правдоподобные HTTP-заголовки и [User-Agent](https://blog.froxy.com/ru/what-are-user-agents-for-web-scraping?hsLang=ru). Но этого может оказаться недостаточно, так как современные системы защиты (веб-файрволы / WAF) научились определять headless-браузеры по особым отпечаткам и признакам. Например, флаг navigator.webdriver установлен в true, признак HeadlessChrome виден в User-Agent и Client Hints, браузер запущен с параметрами --enable-automation или --headless и т. п.

Чтобы их скрыть, нужно либо правильно выключить отдельные опции при запуске, либо установить специальные stealth-плагины. Например: playwright-stealth, undetected-chromedriver, nodriver и т. п.

Не стоит также забывать об имитации человеческого поведения: шевеление мышью, неравномерные задержки между переходами по страницам, характерная прокрутка и т. п.

Ещё вариант — запускать и работать через реальный браузер Chrome или Firefox. У первого есть встроенный протокол CDP (Chrome DevTools Protocol), а у Firefox применяются Marionette или WebDriver BiDi.

Во-вторых, даже если вы полностью скроете следы автоматизации, при парсинге Walmart бот может выдать себя из-за слишком высокой частоты обращений, а также из-за некачественного IP-адреса.

Поэтому большое количество запросов следует разделять на параллельные потоки и сессии, а для каждой сессии настраивать ротацию IP. Если парсер работает с куками, меняйте IP вместе с сессией, а не на каждом запросе: иначе сессия будет выглядеть подозрительно.

Проще всего это сделать с помощью профильного сервиса, такого как [**Froxy**](https://froxy.com/ru). Логика ротации настраивается не внутри скрипта парсинга, а на стороне сервиса, в личном кабинете, для каждого порта по отдельности.

Получается, что [ротация IP](https://blog.froxy.com/ru/fix-proxy-rotation?hsLang=ru) — это ключевой элемент обхода блокировки от Walmart.

## Прокси для скрейпинга Walmart

От использования прокси масса плюсов: процесс парсинга можно безболезненно масштабировать, а в случае бана IP легко заменить на новый и продолжить работу. Ваш реальный IP при этом остаётся скрыт.

Однако прокси бывают разных типов и под разные задачи.

Серверные прокси без ротации — самые уязвимые. IP хостинг-сетей легко классифицировать, и системы безопасности блокируют их без оглядки: маловероятно, что за таким подключением стоит реальный пользователь, ведь он не будет работать с сайтом через хостинг или крупный дата-центр.

Наиболее трастовые виды прокси:

- **Резидентные:** подключения и запросы отправляются от лица провайдеров локального интернета, а именно они предоставляют услуги частным пользователям. Подробнее: [плюсы и минусы резидентных прокси](https://blog.froxy.com/ru/how-do-residential-proxies-work?hsLang=ru).
- **Мобильные:** запросы отправляются из сетей мобильных операторов связи. Блокировать такие подключения крайне невыгодно, так как за одним IP могут работать многие реальные абоненты. Подробнее: [преимущества и недостатки мобильных прокси](https://blog.froxy.com/ru/how-mobile-proxies-work-and-how-to-use-them?hsLang=ru).

Для Walmart, как и для других бизнес-задач, лучше всего подходят резидентные или мобильные прокси с ротацией.

При выборе конкретного провайдера обращайте внимание на количество адресов в пуле, на доступность и гибкость настроек геотаргетинга, на цены в пересчёте на объём трафика, а также на условия ротации IP.

У Froxy есть все типы бизнес-прокси: мобильные, резидентные и дата-центровые с ротацией.

## Как подключить прокси

Пара примеров для подключения прокси к headless-браузерам.

**Сначала Playwright:**

```
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={
            "server": "http://proxy.froxy.com:9000",
            "username": "ваш_логин",
            "password": "ваш_пароль"
        }
    )
    page = browser.new_page()
    page.goto("https://froxy.com/api/detect-ip")  # проверка IP
    print(page.content())
    browser.close()
```

**А теперь Selenium (в скриптах на Python).** Chrome игнорирует логин и пароль, переданные в --proxy-server, поэтому для авторизации на прокси в примере используется selenium-wire. Библиотека больше не поддерживается автором, так что фиксируйте её версию, а для новых проектов лучше выбирать Playwright.

```
# pip install selenium-wire
from seleniumwire import webdriver

proxy = "proxy.froxy.com:9000"
login = "ваш_логин"
password = "ваш_пароль"

options = {
    'proxy': {
        'http': f'http://{login}:{password}@{proxy}',
        'https': f'http://{login}:{password}@{proxy}',
        'no_proxy': 'localhost,127.0.0.1'
    }
}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get("https://froxy.com/api/detect-ip")  # проверка IP
print(driver.page_source)
driver.quit()
```

## Заключение

Несмотря на отсутствие официального API, у Walmart внутри страниц используются структурированные данные с разметкой JSON. Но самая большая проблема — не собрать эти данные, а добраться до них, так как ещё до загрузки страницы браузер клиента, его профиль и IP-адрес анализируются специальными системами защиты.

Как раз для работы с этими системами вам понадобятся headless-браузеры и качественные ротируемые прокси. Арендовать мобильные и резидентные прокси можно у нас. Froxy — это более 10 млн IP с таргетингом до города и до 1000 параллельных портов.

[View full post](https://blog.froxy.com/ru/walmart-scraping)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Команда Froxy"
  },
  "dateModified" : "2026-10-13T11:09:34.245Z",
  "datePublished" : "2026-10-13T07:00:01Z",
  "headline" : "Парсинг Walmart: как собирать данные о товарах и снизить риск блокировок",
  "image" : {
    "@type" : "ImageObject",
    "height" : 1104,
    "url" : "https://blog.froxy.com/hubfs/Image%20%281%29-Oct-12-2026-08-52-13-5989-AM.png",
    "width" : 2208
  },
  "mainEntityOfPage" : "https://blog.froxy.com/ru/walmart-scraping",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60.0,
      "url" : "https://25353777.fs1.hubspotusercontent-eu1.net/hubfs/25353777/top-bar-logo.svg",
      "width" : 154.2857
    },
    "name" : "Блог Froxy | Новости, полезные статьи о использовании прокси "
  }
}
```