कैसे पायथन के साथ ई-कॉमर्स वेबसाइटों को परिमार्जन करें

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

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

ई-कॉमर्स स्क्रैपिंग में ऑनलाइन स्टोर से नाम, कीमतें और आईडी जैसे उत्पाद विवरण निकालना शामिल है। पायथन, अपने बहुमुखी पुस्तकालयों के साथ, इस कार्य को कुशल और सीधा बनाता है। इस गाइड में, हम कॉस्टको की वेबसाइट से उत्पाद की जानकारी को खत्म कर देंगे।

उत्पाद डेटा निकालने के लिए एक स्क्रिप्ट लिखना

स्क्रैपिंग प्रक्रिया में गोता लगाने से पहले, सुनिश्चित करें कि आपके पास आवश्यक पायथन लाइब्रेरी स्थापित हैं:

pip install requests
pip install lxml

हम वेबसाइट पर विशिष्ट उत्पाद पृष्ठों से उत्पाद नाम, उत्पाद सुविधाओं और उत्पाद ब्रांडों को निकालने पर ध्यान केंद्रित करेंगे।

चरण 1। वेबसाइट की HTML संरचना को समझना

किसी भी वेबसाइट से डेटा निकालने के लिए, आपको वेबपेज की संरचना को समझने की आवश्यकता है। एक वेबसाइट पेज खोलें और उन तत्वों का निरीक्षण करें जिन्हें आप स्क्रैप करना चाहते हैं (जैसे, उत्पाद का नाम, फीचर्स ब्रांड, आदि)।

चरण 2। HTTP अनुरोध भेजना

सबसे पहले, हम उत्पाद पृष्ठों पर HTTP GET अनुरोध भेजने के लिए अनुरोध लाइब्रेरी का उपयोग करेंगे। हम एक वास्तविक ब्राउज़र अनुरोध की नकल करने के लिए अनुरोध हेडर भी सेट करेंगे।


import requests

# उत्पाद URL की सूची परिमार्जन करने के लिए
urls = [
    "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
    "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

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-US,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
    'sec-ch-ua-mobile': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# प्रत्येक URL के माध्यम से लूप करें और एक GET अनुरोध भेजें
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        html_content = response.text
        # बाद के चरणों में आगे की प्रक्रिया जोड़ी जाएगी
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

चरण 3। XPATH और LXML

का उपयोग करके डेटा निकालना

LXML का उपयोग करते हुए, हम पार्सड HTML से आवश्यक डेटा पॉइंट निकालेंगे।

from lxml import html

# स्क्रैप किए गए डेटा को स्टोर करने के लिए सूची
scraped_data = []

# प्रत्येक URL के माध्यम से लूप करें और एक GET अनुरोध भेजें
for url in urls:
    response = requests.get(url)
    if response.status_code == 200:
        html_content = response.content
        # LXML के साथ HTML सामग्री पार्स
        tree = html.fromstring(html_content)
        
        # XPath का उपयोग करके डेटा निकालें

        product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
        product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
        product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
        
        # सूची में निकाले गए डेटा को जोड़ें
        scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# स्क्रैपेड डेटा प्रिंट करें
for item in scraped_data:
    print(item)

चरण 4। संभावित मुद्दों को संबोधित करना

वेबसाइटें अक्सर एंटी-बॉट उपायों को लागू करती हैं। प्रॉक्सी का उपयोग करना और उपयोगकर्ता एजेंटों को घुमाने से पता लगाने में मदद मिल सकती है।

आईपी-प्राधिकरण के साथ प्रॉक्सी का उपयोग करना:


proxies = {
    'http': 'http://your_proxy_ip:your_proxy_port',
    'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)

उपयोगकर्ता एजेंटों को घुमाना:


import random

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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    # आवश्यकतानुसार अधिक उपयोगकर्ता एजेंट जोड़ें
]

headers['user-agent'] = random.choice(user_agents)

response = requests.get(url, headers=headers)

चरण 5। CSV फ़ाइल में डेटा सहेजना

अंत में, हम आगे के विश्लेषण के लिए SCRAPED डेटा को CSV फ़ाइल में सहेजेंगे।

import csv

csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# CSV फ़ाइल में डेटा लिखना
try:
    with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        for item in scraped_data:
            writer.writerow(item)
    print(f"Data saved to {csv_file}")
except IOError:
    print(f"Error occurred while writing data to {csv_file}")

पूर्ण कोड


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

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

# उत्पाद URL की सूची परिमार्जन करने के लिए
urls = [
   "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
   "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

# हेडर
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-US,en;q=0.9',
   'cache-control': 'no-cache',
   'dnt': '1',
   'pragma': 'no-cache',
   'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
   'sec-ch-ua-mobile': '?0',
   'sec-fetch-dest': 'document',
   'sec-fetch-mode': 'navigate',
   'sec-fetch-site': 'same-origin',
   'sec-fetch-user': '?1',
   'upgrade-insecure-requests': '1',
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# अनुरोधों को घुमाने के लिए उपयोगकर्ता एजेंटों की सूची
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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   # आवश्यकतानुसार अधिक उपयोगकर्ता एजेंट जोड़ें
]


# अनुरोधों को घूर्णन के लिए परदे के पीछे की सूची
proxies = [
    {'http': 'http://your_proxy_ip:your_proxy_port', 'https': 'https://your_proxy_ip:your_proxy_port'},
    {'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
    # आवश्यकतानुसार अधिक प्रॉक्सी जोड़ें
]

# स्क्रैप किए गए डेटा को स्टोर करने के लिए सूची
scraped_data = []

# प्रत्येक URL के माध्यम से लूप करें और एक GET अनुरोध भेजें
for url in urls:
   # अनुरोध हेडर के लिए एक यादृच्छिक उपयोगकर्ता एजेंट चुनें
   headers['user-agent'] = random.choice(user_agents)
   # अनुरोध के लिए एक यादृच्छिक प्रॉक्सी चुनें
   proxy = random.choice(proxies)

   # हेडर और प्रॉक्सी के साथ URL को HTTP प्राप्त करें
   response = requests.get(url, headers=headers, proxies=proxy, verify=False)
   if response.status_code == 200:
       # HTML सामग्री को प्रतिक्रिया से स्टोर करें
       html_content = response.content
       # LXML के साथ HTML सामग्री पार्स
       tree = html.fromstring(html_content)

       # XPath का उपयोग करके डेटा निकालें
       product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
       product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
       product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()

       # सूची में निकाले गए डेटा को जोड़ें
       scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
   else:
       # यदि अनुरोध विफल हो जाता है तो त्रुटि संदेश प्रिंट करें
       print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# सीएसवी फ़ाइल सेटअप
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# CSV फ़ाइल में डेटा लिखना
try:
   with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
       writer = csv.DictWriter(file, fieldnames=fieldnames)
       writer.writeheader()
       for item in scraped_data:
           writer.writerow(item)
   print(f"Data saved to {csv_file}")
except IOError:
   # यदि फ़ाइल में लिखना विफल हो जाता है तो त्रुटि संदेश प्रिंट करें
   print(f"Error occurred while writing data to {csv_file}")

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

टिप्पणियाँ:

0 टिप्पणियाँ