Python के साथ Walmart डेटा स्क्रैप करने के लिए गाइड

टिप्पणियाँ: 0

बिज़नेस इंटेलिजेंस, रिसर्च और एनालिसिस वेब स्क्रैपिंग के माध्यम से उपलब्ध अनगिनत संभावनाओं में से कुछ हैं। Walmart जैसी एक पूर्ण विकसित व्यवसाय इकाई हमारे लिए आवश्यक जानकारी एकत्र करने की एक आदर्श संरचना प्रदान करती है। हम आसानी से Walmart डेटा जैसे नाम, मूल्य और समीक्षा जानकारी को उनकी अनेक वेबसाइटों से विभिन्न स्क्रैपिंग तकनीकों का उपयोग करके स्क्रैप कर सकते हैं।

इस लेख में हम यह समझेंगे कि Walmart डेटा को कैसे स्क्रैप किया जाए। हम HTTP अनुरोध भेजने के लिए requests और लौटाए गए HTML दस्तावेज़ों को पार्स करने के लिए lxml का उपयोग करेंगे।

Walmart डेटा स्क्रैप करने के लिए Python का उपयोग क्यों करें?

जब कई रिटेल साइटों पर उत्पाद डेटा स्क्रैप करने की बात आती है, तो Python सबसे प्रभावी विकल्पों में से एक है। यहां बताया गया है कि यह डेटा एक्सट्रैक्शन प्रोजेक्ट्स में इतनी सहजता से कैसे फिट होती है:

  1. उन्नत लाइब्रेरीज़: requests और lxml की मौजूदगी का मतलब है कि आप बड़ी ऑनलाइन कैटलॉग्स को बहुत आसानी और प्रभावशीलता के साथ स्क्रैप कर सकते हैं।
  2. उपयोग में सरलता: आसान सिंटैक्स के साथ, उपयोगकर्ता बिना किसी विशेष अनुभव के डेटा पुनर्प्राप्ति प्रक्रियाओं को प्रोग्राम कर सकते हैं और तुरंत काम पर लग सकते हैं।
  3. समुदाय का समर्थन: रिटेल वेबसाइटों की जटिलता के कारण सामुदायिक समर्थन और संसाधन भरपूर उपलब्ध हैं, जिससे समस्याओं का समाधान आसान हो जाता है।
  4. डेटा का प्रबंधन: गहन विश्लेषण के लिए Pandas और विज़ुअल प्रेजेंटेशन के लिए Matplotlib की मदद से उपयोगकर्ता बड़े पैमाने पर डेटा का विश्लेषण कर सकते हैं।
  5. डायनेमिक कंटेंट का प्रबंधन: Selenium के साथ डायनेमिक वेब एलिमेंट्स के साथ इंटरैक्शन संभव होता है, जिससे जावास्क्रिप्ट-लोडेड पेजों से भी डेटा संग्रह संभव हो जाता है।
  6. प्रभावी स्केलिंग: बड़े और छोटे दोनों डेटा सेट्स को संभालने की क्षमता के साथ, Python लंबे समय तक गहन डेटा एक्सट्रैक्शन गतिविधियों में भी उत्कृष्ट प्रदर्शन करती है।

रिटेल प्रोजेक्ट्स में Python का उपयोग न केवल तकनीकी पक्ष को सरल बनाता है बल्कि दक्षता और विश्लेषण की सीमा को भी बढ़ाता है, जिससे यह बाज़ार की गहरी समझ प्राप्त करने के इच्छुक विशेषज्ञों के लिए सर्वोत्तम विकल्प बन जाता है। ये पहलू विशेष रूप से तब उपयोगी होते हैं जब कोई Walmart डेटा स्क्रैप करने का निर्णय लेता है।

अब, चलिए एक Walmart वेब स्क्रैपिंग टूल बनाना शुरू करते हैं।

Walmart डेटा स्क्रैप करने के लिए एनवायरनमेंट सेट करना

शुरुआत करने के लिए, सुनिश्चित करें कि आपके कंप्यूटर पर Python इंस्टॉल है। आवश्यक लाइब्रेरीज़ को pip का उपयोग करके डाउनलोड किया जा सकता है:


pip install requests
pip install  lxml
pip install urllib3

अब आइए निम्नलिखित लाइब्रेरीज़ को इंपोर्ट करें:

  • requests – HTTP के माध्यम से वेब पेज प्राप्त करने के लिए;
  • lxml – HTML दस्तावेज़ों के पेड़ (trees) बनाने के लिए;
  • CSV – एकत्रित डेटा को CSV फ़ाइलों में लिखने के लिए;
  • random – प्रॉक्सी और यूज़र-एजेंट स्ट्रिंग चयन के लिए।

import requests
from lxml import html
import csv
import random
import urllib3
import ssl

उत्पाद URL को परिभाषित करें

वॉलमार्ट डेटा को खुरचने के लिए उत्पाद URL की सूची इस तरह जोड़ी जा सकती है।


product_urls = [
    'link with https',
    'link with https',
    'link with https'
]

उपयोगकर्ता-एजेंट स्ट्रिंग्स और प्रॉक्सी

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


user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]

अनुरोधों के लिए हेडर

अनुरोध हेडर को इस तरह से सेट किया जाना चाहिए जो उन्हें उपयोगकर्ता के ब्राउज़र से आने के रूप में प्रच्छन्न करता है। वॉलमार्ट डेटा को खुरचने की कोशिश करते समय यह बहुत मदद करेगा। यहाँ एक उदाहरण है कि यह कैसे दिखेगा:


headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'dnt': '1',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
}

डेटा भंडारण को इनिशियलाइज़ करें

प्राथमिक कदम एक संरचना बनाना है जो उत्पाद की जानकारी को स्वीकार करेगी।


product_details = []

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


for url in product_urls:
   headers['user-agent'] = random.choice(user_agents)
   proxies = {
       'http': f'http://{random.choice(proxy)}',
       'https': f'http://{random.choice(proxy)}',
   }
   try:
       # URL को HTTP प्राप्त करें अनुरोध भेजें
       response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
       print(response.status_code)
       response.raise_for_status()
   except requests.exceptions.RequestException as e:
       print(f'Error fetching data: {e}')

   # LXML का उपयोग करके HTML सामग्री को पार्स करें
   parser = html.fromstring(response.text)
   # उत्पाद शीर्षक निकालें
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # उत्पाद की कीमत निकालें
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # समीक्षा विवरण निकालें
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # एक शब्दकोश में स्टोर निकाले गए विवरण
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # सूची में उत्पाद विवरण जोड़ें
   product_details.append(product_detail)

शीर्षक:

1.png

कीमत:

2.png

समीक्षा विवरण:

3.png

CSV के लिए डेटा सहेजें

  1. फ़ाइल प्रकार के लिए CSV निर्दिष्ट करने वाली एक नई फ़ाइल बनाएं और इसे लिखने के लिए सेट करें।
  2. CSV फ़ाइल फ़ील्ड नाम (कॉलम) निर्दिष्ट करें।
  3. CSV फ़ाइल में शब्दकोश लिखने के लिए, CSV.DICTWRITER ऑब्जेक्ट बनाएं।
  4. CSV फ़ाइल की हेडर पंक्ति लिखें।
  5. product_details में प्रत्येक शब्दकोश के लिए, CSV फ़ाइल में एक पंक्ति के रूप में शब्दकोश के माध्यम से लूप और लिखें।

with open('walmart_products.csv', 'w', newline='') as csvfile:
    fieldnames = ['title', 'price', 'review_details']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for product_detail in product_details:
        writer.writerow(product_detail)

पूरा कोड

जब वेब स्क्रैपिंग वॉलमार्ट, पायथन कम्प्लीट स्क्रिप्ट नीचे दी गई तरह दिख रही होगी। यहां कुछ टिप्पणियां भी हैं जो आपके लिए प्रत्येक अनुभाग को समझना आसान बनाती हैं।


import requests
from lxml import html
import csv
import random
import urllib3
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()


# वॉलमार्ट डेटा को परिमार्जन करने के लिए उत्पाद URL की सूची
product_urls = [
   'link with https',
   'link with https',
   'link with https'
]

# गुमनामी के लिए यादृच्छिक उपयोगकर्ता-एजेंट तार
user_agents = [
   'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

# आईपी ​​रोटेशन के लिए प्रॉक्सी सूची
proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]


# ब्राउज़र अनुरोधों की नकल करने के लिए हेडर
headers = {
   'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
   'accept-language': 'en-IN,en;q=0.9',
   'dnt': '1',
   'priority': 'u=0, i',
   'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
   'sec-ch-ua-mobile': '?0',
   'sec-ch-ua-platform': '"Linux"',
   'sec-fetch-dest': 'document',
   'sec-fetch-mode': 'navigate',
   'sec-fetch-site': 'none',
   'sec-fetch-user': '?1',
   'upgrade-insecure-requests': '1',
}

# उत्पाद विवरण संग्रहीत करने के लिए एक खाली सूची को प्रारंभ करें
product_details = []

# प्रत्येक उत्पाद URL के माध्यम से लूप
for url in product_urls:
   headers['user-agent'] = random.choice(user_agents)
   proxies = {
       'http': f'http://{random.choice(proxy)}',
       'https': f'http://{random.choice(proxy)}',
   }
   try:
       # URL को HTTP प्राप्त करें अनुरोध भेजें
       response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
       print(response.status_code)
       response.raise_for_status()
   except requests.exceptions.RequestException as e:
       print(f'Error fetching data: {e}')

   # LXML का उपयोग करके HTML सामग्री को पार्स करें
   parser = html.fromstring(response.text)
   # उत्पाद शीर्षक निकालें
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # उत्पाद की कीमत निकालें
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # समीक्षा विवरण निकालें
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # एक शब्दकोश में स्टोर निकाले गए विवरण
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # सूची में उत्पाद विवरण जोड़ें
   product_details.append(product_detail)

# एक CSV फ़ाइल में निकाले गए डेटा को लिखें
with open('walmart_products.csv', 'w', newline='') as csvfile:
   fieldnames = ['title', 'price', 'review_details']
   writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
   writer.writeheader()
   for product_detail in product_details:
       writer.writerow(product_detail)

अतिरिक्त सुझाव

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

इन विशिष्ट रणनीतियों को नियोजित करना एकत्र की गई जानकारी की सटीकता और दायरे को बढ़ाता है, जिससे व्यवसायों को बाजार में बदलाव और उपभोक्ता रुझानों के लिए जल्दी से अनुकूलित करने की अनुमति मिलती है। पायथन में वॉलमार्ट एपीआई के रणनीतिक अनुप्रयोग के माध्यम से, कंपनियां अपने डेटा एकत्र करने की प्रक्रियाओं का अनुकूलन कर सकती हैं, जिससे व्यापक बाजार विश्लेषण सुनिश्चित हो सकता है और निर्णय लेने की सूचना दी जा सकती है।

निष्कर्ष

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

टिप्पणियाँ:

0 टिप्पणियाँ