वापस ब्लॉग पर

वॉलमार्ट उत्पाद डेटा को कैसे स्क्रैप करें: सामान्य प्रॉक्सियों में विफलता का कारण और वास्तव में क्या काम करता है।

Ethan Brown
Ethan Brown

Advanced Bot Mitigation Engineer

01-Jun-2026

मुख्य निष्कर्ष:

  • एक यूएस आईपी Walmart पर एक उपयोगी प्रतिक्रिया के समान नहीं है। Walmart आईपी प्रतिष्ठा, व्यवहारिक स्थिरता, और क्षेत्रीय ट्रैफ़िक संकेंद्रण का मूल्यांकन करता है — केवल उस देश को नहीं जिस पर एक आईपी समाधान करता है। एक सामान्य यूएस प्रॉक्सी HTTP 200 वापस कर सकता है और फिर भी बॉट-चेक या CAPTCHA पृष्ठ को शरीर में लौटाता है।
  • HTTP 200 ≠ निकाला गया उत्पाद डेटा। सामान्य यूएस प्रॉक्सी नियमित रूप से एक 200 OK लौटाते हैं जिसका शरीर एक बॉट-चेक या CAPTCHA पृष्ठ होता है न कि उत्पाद ग्रिड — और एक और हिस्सा कभी भी कनेक्ट नहीं होता। स्थिति कोड अकेले यह नहीं बताते कि क्या एक प्रतिक्रिया वास्तविक है।
  • डेटासेंटर आईपी सबसे तेजी से degrade होते हैं; निवास स्थान alone पर्याप्त नहीं है। निवास स्थान का बाहर निकलना फर्श बढ़ाता है, लेकिन Walmart यह भी जांचता है कि एक सत्र ब्राउज़र की तरह व्यवहार करता है या नहीं — JavaScript चलाना, कुकीज़ रखना, और एक सुसंगत फिंगरप्रिंट प्रस्तुत करना। एक कच्ची प्रॉक्सी बाइट्स प्रदान करती है; यह एक पृष्ठ को प्रस्तुत नहीं करती।
  • एक प्रकट एंटी-डिटेक्शन ब्राउज़र अंतर को समाप्त करता है। Scrapeless Scraping Browser 195+ देशों में आवासीय प्रॉक्सियों को क्लाउड-पक्ष JavaScript रेंडरिंग और एंटी-डिटेक्शन फिंगरप्रिंटिंग के साथ जोड़ता है, ताकि जो पृष्ठ वापस आता है वह वास्तविक उत्पाद ग्रिड हो न कि एक चुनौती शेल।
  • रेंडर देखा जा सकता है। Scrapeless Scraping Browser Walmart खोज URL को पृष्ठ शीर्षक लैपटॉप - Walmart.com पर प्रस्तुत करता है, जो 160+ उत्पाद एंकर (a[link-identifier]) और दर्जनों [data-item-id] नोड्स उत्पन्न करता है — एक वास्तविक, पृष्ठबद्ध उत्पाद ग्रिड न कि एक चुनौती शेल।
  • शुरू करने के लिए मुफ्त। नए Scrapeless खातों में मुफ्त Scraping Browser रनटाइम शामिल है — app.scrapeless.com पर साइन अप करें।

परिचय: एक 200 स्थिति हरी बत्ती नहीं है

Walmart का सार्वजनिक कैटलॉग अमेरिका के खुदरा में सबसे अधिक देखे जाने वाले डेटा सेटों में से एक है। प्राइसिंग टीमें प्रतिस्पर्धी SKU पर नज़र रखती हैं, ब्रांड मालिक MAP अनुपालन की निगरानी करते हैं, मार्केटप्लेस विक्रेता खरीद-बॉक्स आंदोलन पर निगरानी रखते हैं, और AI एजेंट उत्पाद विशेषताओं को डाउनस्ट्रीम पाइपलाइनों में लाते हैं। डेटा एक ब्राउज़र में सार्वजनिक रूप से दिखाई देता है — यही कारण है कि इतनी सारी टीमें मानती हैं कि एक प्रॉक्सी और एक HTTP क्लाइंट इसे एकत्र करने के लिए पर्याप्त हैं।

वे नहीं हैं। Walmart पर सबसे सामान्य विफलता मोड मौन है: एक अनुरोध एक यूएस प्रॉक्सी के माध्यम से जाता है, एक 200 OK के साथ लौटता है, और पाइपलाइन एक सफलता रिकॉर्ड करती है — लेकिन शरीर एक बॉट-प्रमाणन पृष्ठ, एक खाली React शेल, या एक CAPTCHA प्रॉम्प्ट है। स्थिति पंक्ति कहती है कि सब कुछ काम किया; पेलोड में कोई उत्पाद डेटा नहीं है। एक स्क्रैपर जो स्थिति कोड पर भरोसा करता है वह एक जीत बुक करता है और कुछ भी उपयोगी संग्रहीत नहीं करता।

यह पोस्ट बताती है कि सामान्य प्रॉक्सियां Walmart पर क्यों विफल होती हैं, विफलता दर को एक विशेष सार्वजनिक बेंचमार्क के साथ समर्थन करती है, और Scrapeless Scraping Browser के शीर्ष पर एक Python कार्यप्रवाह से गुजरती है — एक एंटी-डिटेक्शन क्लाउड ब्राउज़र जो पृष्ठ को प्रस्तुत करता है, सत्र की स्थिति रखता है, और आवासीय बाहर निकलने के माध्यम से रूट करता है, ताकि जो प्रतिक्रिया वापस आती है वह वास्तव में वही उत्पाद ग्रिड हो जिसका आप चाहते थे। कार्यप्रवाह खोज-परिणाम रिकॉर्ड (शीर्षक, मूल्य, लिंक, आइटम आईडी) को निकालता है और एक परिणाम से इसके उत्पाद विवरण पृष्ठ की ओर जाता है।


आप इसके साथ क्या कर सकते हैं

  • प्रतिस्पर्धात्मक मूल्य ट्रैकिंग। प्रतिस्पर्धी Walmart SKU के बीच मूल्य, सूची मूल्य, और छूट ध्वज को एक निरंतर लय में एकत्र करें।
  • MAP अनुपालन निगरानी। ब्रांड मालिक तृतीय-पक्ष विक्रेता मूल्य निर्धारण की निगरानी करते हैं और MAP से नीचे की लिस्टिंग को चिह्नित करते हैं।
  • कैटलॉग इनजेक्शन। खोज और श्रेणी की लिस्टिंग को एक मानकीकृत उत्पाद स्कीमा (शीर्षक, मूल्य, लिंक, आइटम आईडी) के साथ डाउनस्ट्रीम पाइपलाइनों में भेजें।
  • खरीद-बॉक्स और विक्रेता खुफिया। ट्रैक करें कि कौन सा विक्रेता एक निश्चित लिस्टिंग को पकड़ता है और कैसे ऑफ़र समय के साथ घूमते हैं।
  • उपलब्धता और विविधता। यह निगरानी करें कि एक प्रश्न के लिए कौन से उत्पाद सतह पर आते हैं और कैसे परिणाम सेट क्षेत्रों के बीच बदलता है।
  • AI एजेंट संवर्धन। एक प्रकट उत्पाद ग्रिड को एक एजेंट को दें जो कैटलॉग को वर्गीकृत, डुप्लिकेट हटाता है, या संक्षेप में प्रस्तुत करता है।

Scrapeless में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा तक पहुंचते हैं जबकि लागू कानूनों, नियमों, और वेबसाइट की गोपनीयता नीतियों का सख्ती से पालन करते हैं। इस पोस्ट में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है।


सामान्य प्रॉक्सियां Walmart पर क्यों विफल होती हैं

एक सामान्य प्रॉक्सी एक काम करती है: यह आपके HTTP अनुरोध को एक अलग आईपी से आगे बढ़ाती है और उस बाइट्स को लौटाती है जो Walmart वापस भेजता है। यह JavaScript नहीं चलाती, ब्राउज़र फिंगरप्रिंट नहीं बनाए रखती, या अनुरोधों के बीच सत्र की स्थिति नहीं रखती। Walmart की सुरक्षा विशेष रूप से यह पहचानने के लिए बनाई गई है कि एक कच्ची प्रॉक्सी क्या नकली नहीं कर सकती।

Walmart आईपी के देश से अधिक की जांच करता है

Walmart की एंटी-बॉट परत कई संकेतों का एक साथ मूल्यांकन करती है:

  • आईपी प्रतिष्ठा — डेटासेंटर रेंज और ज्ञात प्रॉक्सी पूल का कम विश्वास होता है और जल्दी चुनौती खींचते हैं।
  • व्यवहारिक स्थिरता — यह कि क्या क्लाइंट पृष्ठ स्क्रिप्ट चला रहा है, कुकीज़ को फिर से पेश करता है, और वास्तविक ब्राउज़र से मेल खाने वाला हेडर और टाइमिंग प्रस्तुत करता है।
  • क्षेत्रीय ट्रैफ़िक संकेंद्रण — केवल उस देश को नहीं जिस पर एक आईपी समाधान करता है, बल्कि यह भी कि क्या किसी क्षेत्र या सबनेट से ट्रैफ़िक स्वाभाविक रूप से वितरित या स्वचालन का संकेत देने के तरीके से संकेंद्रित दिखता है।
    एक देश-स्तरीय अमेरिकी प्रॉक्सी उन जांचों में से ठीक एक को पूरा करती है। यह इस बारे में कुछ नहीं कहती कि क्या अनुरोध जावास्क्रिप्ट चलाता है या ब्राउज़र की तरह व्यवहार करता है, और एक ही एंडपॉइंट के खिलाफ अमेरिकी डेटा सेंटर आईपी का एक पूल ट्रैफ़िक को इस तरह केंद्रित करता है जिस तरह वॉलमार्ट के क्षेत्रीय चेक को पकड़ने के लिए डिज़ाइन किया गया है।

स्थिति कोड झूठ है

सबसे महंगा लक्षण वह है जो सफलता जैसा दिखता है। वॉलमार्ट के खिलाफ सामान्य अमेरिकी प्रॉक्सियों को मात्रा में चलाएं और प्रतिक्रियाएँ तीन बकेट में विभाजित हो जाती हैं: एक अल्पसंख्यक जो उपयोगी उत्पाद डेटा लौटाती है, एक बड़ी हिस्सेदारी जो 200 OK स्थिति के बावजूद एक बॉट-चेक या कैप्चा पृष्ठ लौटाती है, और शेष जो कभी कनेक्ट नहीं होती। मध्य बकेट जाल है — एक पाइपलाइन जो 200 OK को सफलता मानती है, मौन रूप से चुनौती पृष्ठों को अपने डेटा सेट में समाहित कर लेगी। मान्य निष्कर्ष कम रहता है क्योंकि स्थिति कोड और सामग्री अक्सर असहमत होती हैं।

डेटा सेंटर तेजी से घटते हैं; केवल आवासीय पर्याप्त नहीं है

आवासीय आईपी के माध्यम से राउटिंग फर्श को ऊँचा करती है — आवासीय सिग्नल डेटा सेंटर रेंज की तुलना में अधिक विश्वसनीयता प्रदान करता है। लेकिन आवासीय प्रॉक्सियाँ अकेले व्यवहार और रेंडरिंग गैप को खुला छोड़ देती हैं। एक साधारण HTTP क्लाइंट से जुड़ा आवासीय आईपी अभी भी वॉलमार्ट के पृष्ठ स्क्रिप्टों को निष्पादित नहीं करता, एक पतला फिंगरप्रिंट पेश करता है, और निर्जलित खोल लौटाता है। आईपी अधिक विश्वसनीय है; अनुरोध अभी भी पहचानने योग्य स्वचालित है।

जो वास्तव में गैप को बंद करता है

वॉलमार्ट के खिलाफ विश्वसनीय मार्ग तीन चीजों का संयोजन करता है जो एक कच्ची प्रॉक्सी अपने आप प्रदान नहीं कर सकती:

  1. एक वास्तविक रेंडर्ड ब्राउज़र जो वॉलमार्ट का जावास्क्रिप्ट निष्पादित करता है, ताकि उत्पाद ग्रिड DOM में हाइड्रेट हो सके।
  2. आवासीय डेटा ताकि आईपी उस विश्वसनीयता को ले जाए जो डेटा सेंटर रेंज की कमी है।
  3. व्यवहारिक और फिंगरप्रिंट संगति — अनुरोधों के बीच रखे गए कुकी, एक फिंगरप्रिंट जो जैविक ट्रैफ़िक से मेल खाती है, और सत्र राज्य जो कायम रहता है।

यही संयोजन Scrapeless Scraping Browser एक सिंगल प्रबंधित सतह के रूप में प्रदान करता है।

सामान्य प्रॉक्सी बनाम रेंडर्ड क्लाउड ब्राउज़र

क्षमता सामान्य अमेरिकी प्रॉक्सी Scrapeless Scraping Browser
अमेरिकी आईपी से अनुरोध अग्रेषित करता है हाँ हाँ
वॉलमार्ट का जावास्क्रिप्ट चलाता है (उत्पाद ग्रिड को रेंडर करता है) नहीं हाँ — क्लाउड-साइड रेंडरिंग
कैप्चा-के तहत-200 को पकड़ता है (वास्तविक पृष्ठ लौटाता है, चुनौती नहीं) नहीं हाँ — रेंडर किया गया ग्रिड हाइड्रेट होता है या चुनौती दिखाई देती है
आवासीय डेटा केवल यदि स्पष्ट रूप से आवासीय हो 195+ देशों में आवासीय प्रॉक्सियाँ
व्यवहारिक / सत्र संगति (कुकी, समय) नहीं हाँ — स्थायी सत्र राज्य
एंटी-डिटेक्ट ब्राउज़र फिंगरप्रिंट नहीं हाँ — प्रत्येक सत्र पर
क्षेत्रीय ट्रैफिक संगति एक पूल से ट्रैफ़िक को केंद्रित करता है आवासीय नेटवर्क के माध्यम से वितरित करता है

एक सामान्य प्रॉक्सी प्रश्न का उत्तर देती है "क्या मैं इस अनुरोध को एक अमेरिकी आईपी से भेज सकता हूँ?" Scrapeless Scraping Browser उस प्रश्न का उत्तर देती है जो वास्तव में महत्वपूर्ण है: "क्या मैं वापस रेंडर्ड उत्पाद ग्रिड प्राप्त कर सकता हूँ?"


क्यों Scrapeless Scraping Browser

Scrapeless Scraping Browser एक अनुकूलनशील, एंटी-डिटेक्ट क्लाउड ब्राउज़र है जो वेब क्रॉलर और एआई एजेंटों के लिए डिजाइन किया गया है। विशेष रूप से वॉलमार्ट के लिए, यह लाता है:

  • 195+ देशों में आवासीय प्रॉक्सियाँ, सत्र निर्माण पर अमेरिकी गंतव्य पर स्थिर होती है, ताकि आईपी आवासीय विश्वास लेकर आए बजाय डेटा सेंटर के निशान के।
  • क्लाउड-साइड जावास्क्रिप्ट रेंडरिंग, ताकि वॉलमार्ट का रिएक्ट ग्रिड हाइड्रेट हो सके और उत्पाद नोड्स DOM में निष्कर्षण से पहले मौजूद हों।
  • सत्र निरंतरता, ताकि कुकी और ब्राउज़र की स्थिति खोज → विवरण प्रवाह के बीच संगत बनी रहे बजाय हर अनुरोध पर रीसेट होने के।
  • प्रत्येक सत्र पर एंटी-डिटेक्ट फिंगरप्रिंटिंग, ताकि पृष्ठ इसी तरह रेंडर हो जैसे यह जैविक ट्रैफ़िक के लिए करता है।
  • एकल प्रोग्रामेटिक सतह - अपने API कुंजी के साथ एक सीडीपी यूआरएल बनाएं, प्लेइव्राइट के साथ कनेक्ट करें, और बिना अवसंरचना स्थापित किए एक वास्तविक ब्राउज़र को चलाएं।

रेंडर अवलोकनीय व्यवहार है। Scrapeless Scraping Browser https://www.walmart.com/search?q=laptop को पृष्ठ शीर्षक laptop - Walmart.com में रेंडर करता है, जिससे 160+ उत्पाद एंकर (a[link-identifier]) और दर्जनों [data-item-id] नोड्स मिलते हैं - यह एक वास्तविक, पृष्ठित उत्पाद ग्रिड है ना कि एक चुनौती के खोल। वॉलमार्ट उत्पाद यूआरएल https://www.walmart.com/ip/<slug>/<id> के रूप में होते हैं, और प्रत्येक परिणाम एंकर एक में हल होता है।

अपने API कुंजी को मुफ्त योजना पर प्राप्त करें app.scrapeless.com पर। Scraping Browser उत्पाद पृष्ठ और Proxy Solutions पृष्ठ उस आवासीय नेटवर्क को कवर करते हैं जो क्लाउड ब्राउज़र को समर्थन करता है।


पूर्वापेक्षाएँ

  • Python 3.10 या नया।
  • एक Scrapeless खाता और API कुंजी — app.scrapeless.com पर साइन अप करें। एसडीके कुंजी को SCRAPELESS_API_KEY वातावरणीय चर से पढ़ता है।
  • टर्मिनल और Python के साथ बुनियादी परिच familiarity।

इंस्टॉल

कार्यप्रवाह में एक पैकेज का उपयोग होता है: Python के लिए Playwright, आधिकारिक रूप से समर्थित क्लाइंट जो CDP के माध्यम से Scrapeless स्क्रैपिंग ब्राउज़र से कनेक्ट करता है और प्रस्तुत DOM को पढ़ता है।

bash Copy
pip install playwright

Playwright का connect_over_cdp दूरस्थ क्लाउड ब्राउज़र को संचालित करता है, इसलिए आपको playwright install या किसी स्थानीय ब्राउज़र बाइनरी की आवश्यकता नहीं है — प्रस्तुतिकरण क्लाउड-पक्ष में होता है। फिर अपना API कुंजी निर्यात करें ताकि यह कनेक्शन URL का अनुसरण कर सके:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

कनेक्शन स्वरूप और पुस्तकालय मार्गदर्शिकाएँ docs.scrapeless.com पर दस्तावेजीकृत हैं।


चरण 1 — एक US-egress कनेक्शन URL बनाएँ

Scrapeless स्क्रैपिंग ब्राउज़र एक CDP अंत बिंदु है। अपने API कुंजी को token के रूप में और US egress को proxyCountry के रूप में उपयोग करके WebSocket URL बनाएँ — Walmart एक US रिटेल साइट है, और एक US आवासीय सत्र उपयोगी प्रतिक्रिया के लिए आधारभूत है।

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):
    # API कुंजी URL के रूप में `token` पर चलती है; egress और जीवनकाल क्वेरी पैरामीटर होते हैं।
    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 सत्र को एक US आवासीय IP के माध्यम से मार्गदर्शित करता है। sessionTTL=240 सत्र को इतनी देर तक जीवित रखता है कि वह खोज पृष्ठ और उत्पाद विवरण पृष्ठों के बीच कुकीज़ को बनाए रख सके।


चरण 2 — CDP के माध्यम से कनेक्ट करें और खोज पृष्ठ खोलें

Playwright के connect_over_cdp के साथ स्क्रैपिंग ब्राउज़र अंत बिंदु से कनेक्ट करें, फिर Walmart खोज URL खोलें। चूँकि यह एक वास्तविक प्रस्तुत ब्राउज़र है, Walmart का JavaScript निष्पादित होता है और उत्पाद ग्रिड 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()

    # पहले होमपेज को गर्म करें, फिर उसी सत्र में खोज खोलें।
    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)                     # React ग्रिड को हाइड्रेट होने दें

    # पुष्टि करें कि प्रतिक्रिया वास्तविक उत्पाद ग्रिड है, न कि एक चुनौती शेल।
    title = page.title()                            # एक वास्तविक रेंडर पर "laptop - Walmart.com"
    cards = page.query_selector_all("a[link-identifier]")  # हाइड्रेट होने पर ~160+ उत्पाद एंकर
    print(title, len(cards))

नेविगेशन के बाद थोड़ी सी प्रतीक्षा React ग्रिड को हाइड्रेट करने देती है इससे पहले कि डेटा निकाला जा सके। ऊपर दी गई दो जाँचें - पृष्ठ का शीर्षक और a[link-identifier] एंकर की गिनती - यह पुष्टि करने का तरीका है कि प्रतिक्रिया वास्तविक है इससे पहले कि आप इसे भरोसा करें। एक चुनौती पृष्ठ उत्पाद शीर्षक को ले जाने या ग्रिड को प्रस्तुत नहीं करता है; एक वास्तविक पृष्ठ ये दोनों करता है।


चरण 3 — उत्पाद ग्रिड को निकालें

प्रत्येक खोज-परिणाम कार्ड a[link-identifier] पर आधारित होता है, जिसमें [data-item-id] नोड्स Walmart आइटम आईडी ले जाते हैं। एंकरों पर चलें और हर उत्पाद के लिए एक मानकीकृत रिकॉर्ड खींचें: शीर्षक, मूल्य, लिंक, और आइटम आईडी।

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

        # शीर्षक परिणाम कार्ड पर लिंक टेक्स्ट / सुलभ नाम में स्थित होता है।
        span = link_el.query_selector("span")
        title = span.inner_text() if span else link_el.get_attribute("link-identifier")

        # मूल्य कार्ड में हाइड्रेशन के बाद प्रस्तुत किया जाता है; दृश्य मूल्य पाठ पढ़ें।
        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

ऊपर दिए गए सेलेक्टर्स (a[link-identifier], [data-item-id], [data-automation-id="product-price"]) खोज ग्रिड पर स्थिर एंकर हैं। एक लेआउट के परिवर्तन पर पहले लाइव DOM का निरीक्षण करें: प्रस्तुत HTML पढ़ें, वर्तमान एंकर नामों की पुष्टि करें, और सेलेक्टर्स को उस पृष्ठ के खिलाफ कसें जो वास्तव में भेजा गया है। हैश किए गए उपयोगिता वर्ग नाम विभिन्न डिप्लॉय के दौरान बदलते हैं; अर्ध-गुणात्मक data-* एंकर स्थिर सतह हैं।

अपने मुफ्त योजना पर अपना एपीआई कुंजी प्राप्त करें: app.scrapeless.com

चरण 4 — एक परिणाम से उसके उत्पाद विवरण पृष्ठ पर चलें

प्रत्येक परिणाम लिंक एक उत्पाद विवरण पृष्ठ पर जाता है, जो इस रूप में है https://www.walmart.com/ip/<slug>/<id>। उसी सत्र में एक खोलें - सत्र के कुकीज़ और फिंगरप्रिंट बरकरार रहते हैं, इसलिए विवरण पृष्ठ उसी तरह रेंडर होता है जैसे खोज पृष्ठ।

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

# चरण 2 से उसी `with sync_playwright() as p:` सत्र के भीतर:
products = extract_products(page)
if products and products[0]["link"]:
    detail = fetch_detail(page, products[0]["link"])
    print(detail)

खोज पास और विवरण पास को एक सत्र के भीतर रखना व्यवहारिक स्थिरता को बनाए रखता है: विवरण पृष्ठ उसी विश्वसनीय कुकीज़ और फिंगरप्रिंट को देखता है जिसने खोज ग्रिड को रेंडर किया, इसलिए यह उसी तरह हाइड्रेट होता है। विवरण पृष्ठ भी समृद्ध फ़ील्ड प्रदर्शित करता है - ब्रांड, पूर्ण विशिष्टता, विक्रेता, पूर्ति विकल्प - जो खोज कार्ड नहीं ले जाता।

आपको क्या मिलता है

स्क्रैपिंग ब्राउज़र एक लाइव रेंडर किया गया DOM लौटाता है; स्कीमा वही है जो एक्सट्रक्टर इससे पढ़ता है। चरण 3 के खोज-ग्रिड एक्सट्रक्टर के लिए, एक रिकॉर्ड ऐसा दिखता है:

json Copy
// स्कीमा बिल्कुल वही है जो चरण 3 एक्सट्रक्टर उत्सर्जित करता है।
// फील्ड मान चित्रात्मक नमूने हैं, किसी भी उत्पाद का स्नैपशॉट नहीं है।
{
  "query": "https://www.walmart.com/search?q=laptop",
  "resultCount": 60,
  "products": [
    {
      "itemId": "5689219329",
      "title": "उदाहरण 15.6 इंच का लैपटॉप, 16GB RAM, 512GB SSD",
      "price": 499.0,
      "currency": "USD",
      "link": "https://www.walmart.com/ip/Example-Laptop-15-6-in/5689219329"
    },
    {
      "itemId": "7741203355",
      "title": "उदाहरण 2-इन-1 टचस्क्रीन लैपटॉप, 8GB RAM, 256GB SSD",
      "price": 379.0,
      "currency": "USD",
      "link": "https://www.walmart.com/ip/Example-2-in-1-Laptop/7741203355"
    }
  ]
}

इस आउटपुट के बारे में कुछ ईमानदार अवलोकन, बड़े पैमाने पर चलाने से पहले जानने के लायक:

  • हाइड्रेशन का समय। Walmart का खोज ग्रिड पहले एक कंकाल स्थापित करता है, फिर कार्ड भरता है। निकासी से पहले नेविगेशन के बाद थोड़े इंतजार करना एक पूर्ण ग्रिड को गेट करता है न कि आंशिक। यदि एक पास बहुत कम कार्ड लौटाता है, तो ग्रिड ने हाइड्रेट करना समाप्त नहीं किया था - चयनकर्ताओं को कसने से पहले फिर से रेंडर किया गया HTML पढ़ें।
  • एक 200 को वास्तविकता की पुष्टि करें। उत्पाद शीर्षक (laptop - Walmart.com) और a[link-identifier] एंकर की भरी हुई संख्या की उपस्थिति उस संकेत का संकेत है कि प्रतिक्रिया असली पृष्ठ है। एक खाली ग्रिड या एक गायब शीर्षक का मतलब है कि शरीर एक चुनौती या खोल है चाहे स्थिति पंक्ति कुछ हो।
  • शर्तीय फ़ील्ड। हर कार्ड एक दृश्यमान मूल्य नहीं ले जाता (स्टॉक से बाहर या प्रायोजित स्थान भिन्न हो सकते हैं), और विवरण पृष्ठ ऐसे फ़ील्ड को उजागर करता है जो खोज कार्ड नहीं ले जाता। अनुपस्थित फ़ील्ड को null के रूप में मानें न कि कुंजी को छोड़ दें, ताकि डाउनस्ट्रीम उपयोगकर्ता स्थिर बने रहें।
  • चयनकर्ता स्थिरता। a[link-identifier], [data-item-id], और [data-automation-id="product-price"] स्थायी एंकर हैं। हैश वर्ग नाम विभिन्न तैनातियों में बदलते हैं; जैविक data-* विशेषताओं पर एंकर करें।
  • क्षेत्रीय विविधता। मूल्य, उपलब्धता, और परिणाम सेट स्वयं क्षेत्र के अनुसार भिन्न होते हैं। इसी तरह मूल्य-इतिहास श्रृंखला की तुलना करने के लिए proxyCountry को स्थिर रखें।

निष्कर्ष: अपने Walmart उत्पाद पाइपलाइन को स्केल करें

Walmart को विश्वसनीय रूप से स्क्रैप करना एक सिद्धांत पर निर्भर करता है: स्थिति कोड सफलता का संकेत नहीं है - एक रेंडर किया गया उत्पाद ग्रिड है। सामान्य प्रॉक्सियां एक अमेरिकी आईपी से बाइट्स को अग्रेषित करती हैं और वहीं रुक जाती हैं, यही वजह है कि एक सार्वजनिक बेंचमार्क ने सामान्य-प्रॉक्सी वैध निकासी को 40% से नीचे रखा, जिसमें सबसे बड़ा विफलता बकेट 200 स्थिति के तहत सर्व किए गए बॉट पृष्ठों का था। समाधान एक बेहतर प्रॉक्सी नहीं है; यह एक वास्तविक रेंडर किया गया ब्राउज़र है जिसमें आवासीय निकासी और स्थिर सत्र व्यवहार है।

स्क्रैपलेस स्क्रैपिंग ब्राउज़र यही एक सतह प्रदान करता है: एक अमेरिकी आवासीय सत्र बनाएं, सीडीपी के माध्यम से कनेक्ट करें, खोज यूआरएल को रेंडर करें, पुष्टि करें कि उत्पाद ग्रिड मौजूद है, रिकॉर्ड निकालें, और उसी सत्र के भीतर उत्पाद विवरण पृष्ठों पर चलें। अमेरिकी निकासी को स्थिर रखें, खोज और विवरण पास को एक सत्र के भीतर रखें, सुनिश्चित करें कि प्रतिक्रिया उत्पाद शीर्षक और ग्रिड एंकर ले जाती है इससे पहले कि उस पर भरोसा करें, और अनुपस्थित फ़ील्ड को nullable मानें।
इस समान दृष्टिकोण के लिए अन्य रिटेल और लिस्टिंग साइटों पर, भाई-बहन के गाइड 2026 में सबसे अच्छे Zillow स्क्रैपर्स और 2026 में सबसे अच्छे Amazon स्क्रैपर्स देखें।


क्या आप अपने AI-संचालित डेटा पाइपलाइन बनाने के लिए तैयार हैं?

हमारे समुदाय से जुड़ें ताकि एक मुफ्त योजना का दावा कर सकें और उन डेवलपर्स से जुड़ सकें जो रिटेल-डेटा पाइपलाइनों का निर्माण कर रहे हैं: डिस्कॉर्ड · टेलीग्राम

मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम और पाइपलाइन आवश्यकताओं के लिए वॉलमार्ट क्वेरी, श्रेणियों और क्षेत्रों के अनुसार उपरोक्त पैटर्न को अनुकूलित करने के लिए app.scrapeless.com पर साइन अप करें। प्राइसिंग पेज पर वर्तमान योजनाएँ देखें।


सामान्य प्रश्न

प्रश्न 1: एक अमेरिकी प्रॉक्सी पर वॉलमार्ट पर क्यों प्रतिबंधित होता है?

क्योंकि वॉलमार्ट केवल उस देश का मूल्यांकन नहीं करता जिस पर एक IP का समाधान होता है। यह IP की प्रतिष्ठा, व्यवहारिक निरंतरता और क्षेत्रीय ट्रैफ़िक एकाग्रता की जांच करता है। एक देश-स्तरीय अमेरिकी प्रॉक्सी केवल देश की जांच संतुष्ट करता है; यह जावास्क्रिप्ट नहीं चलाता या सत्र की स्थिति नहीं रखता। व्याव Practि में, वॉलमार्ट पर अधिकांश सामान्य प्रॉक्सी प्रतिक्रियाएँ उपयोगी उत्पाद डेटा नहीं हैं।

प्रश्न 2: क्या केवल आवासीय प्रॉक्सी पर्याप्त हैं?

नहीं। आवासीय इग्रेस डेटा सेंटर रेंज की तुलना में विश्वास को बढ़ाता है, लेकिन एक सामान्य HTTP क्लाइंट से जुड़ी आवासीय IP अभी भी पृष्ठ को प्रदर्शित नहीं करती या एक निरंतर ब्राउज़र फिंगरप्रिंट नहीं रखती। विश्वसनीय पथ आवासीय इग्रेस को एक वास्तविक रेंडर किए गए ब्राउज़र और स्थायी सत्र स्थिति के साथ जोड़ता है - जो Scrapeless स्क्रैपिंग ब्राउज़र एक सत्र में संयोजित करता है।

प्रश्न 3: मैं कैसे पुष्टि करूँ कि 200 प्रतिक्रिया वास्तविक है और CAPTCH पृष्ठ नहीं है?

पेलोड की जांच करें, न कि स्थिति पंक्ति की। एक वास्तविक वॉलमार्ट खोज रेंडर पर, पृष्ठ का शीर्षक laptop - Walmart.com है और DOM उत्पाद एंकर (a[link-identifier]) और [data-item-id] नोड्स लेकर चलता है। यदि शीर्षक अनुपस्थित है और ग्रिड खाली है, तो बॉडी एक चुनौती या अव्यवस्थित शेल है चाहे स्थिति 200 हो।

प्रश्न 4: मैं कितनी अनुरोधों को समानांतर में चला सकता हूँ?

समानांतरिता को सामान्य रखें - प्रत्येक होस्ट पर लगभग तीन कार्यकर्ता - और प्रत्येक सत्र पर अमेरिकी इग्रेस को संतुलित करें। उच्च फैन-आउट के लिए, होस्ट के बीच शार्द करें बजाय एक ही पर समानांतरता बढ़ाने के, ताकि ट्रैफिक स्वाभाविक रूप से वितरित रहे।

प्रश्न 5: वॉलमार्ट ने अपना DOM बदल दिया और मेरी चयनकर्ता बुरी तरह टूट गई। अब क्या?

फिर से सीधे रेंडर किए गए HTML को पढ़ें, वर्तमान स्थिर एंकर (a[link-identifier], [data-item-id], data-automation-id विशेषताएँ) की पहचान करें, और पृष्ठ अब जो भेजता है उसके खिलाफ एक्वक्टर को कसें। घुंघराले क्लास नामों के बजाय अर्थपूर्ण data-* विशेषताओं पर ध्यान केंद्रित करें, जो तैनाती के दौरान बदलते हैं।

प्रश्न 6: क्या यह बिना AI एजेंट के चल सकता है?

हाँ। चरण 1 से 4 में पायथन अपने आप पर अंत से अंत तक चलता है - सत्र उत्पन्न करना, CDP के माध्यम से कनेक्ट करना, रेंडर करना और निकालना। एक AI एजेंट से इसे चलाना एक सुविधा परत है, आवश्यकता नहीं।

स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।

सबसे लोकप्रिय लेख

सूची