उत्पाद विवरण के लिए ईकॉमर्स डेटा स्क्रैपिंग प्रतिस्पर्धात्मक विश्लेषण, मूल्य निगरानी और बाज़ार अनुसंधान करने में उपयोगी है। उत्पाद पृष्ठों से डेटा स्क्रैपिंग Python का उपयोग करके आसानी से की जा सकती है। यह ईकॉमर्स स्क्रैपिंग ट्यूटोरियल आपको दिखाएगा कि ऑनलाइन स्टोर्स से जानकारी प्राप्त करने के लिए requests और lxml का संयोजन कैसे करें।
ईकॉमर्स के लिए वेब पेज स्क्रैप करना मतलब है इंटरनेट पर दुकानों से उत्पाद की जानकारी जैसे शीर्षक, कीमत या पहचान संख्या प्राप्त करना। Python में उपलब्ध कई लाइब्रेरी न केवल इसे आसान बनाती हैं बल्कि काफी प्रभावी भी बनाती हैं। इस लेख में, हम Python का उपयोग करके ईकॉमर्स वेबसाइटों को स्क्रैप करने पर ध्यान केंद्रित करेंगे। हमारा उदाहरण Costco की वेबसाइट होगी।
शुरू करने के लिए, आइए सुनिश्चित करें कि हमारे पास वे सभी Python ईकॉमर्स स्क्रैपिंग टूल्स या लाइब्रेरी हैं जिनकी हमें इस स्क्रिप्ट के लिए आवश्यकता होगी:
pip install requests
pip install lxml
हम वेबसाइट के विशेष पन्नों से उत्पादों के नाम, विशेषताएँ और ब्रांड निकालने पर ध्यान केंद्रित करेंगे।
एक ईकॉमर्स उत्पाद स्क्रैपर बनाना शुरू करने के लिए सबसे पहले यह समझना होगा कि किसी वेबपेज की संरचना कैसी है। वेबसाइट पर जाएँ और वह पेज खोलें जिससे जानकारी एकत्र करनी है, और आवश्यक तत्वों (जैसे उत्पाद का नाम, विशेषताएँ, ब्रांड आदि) का निरीक्षण करें।
सबसे पहले हम requests लाइब्रेरी आयात करेंगे ताकि उत्पाद पन्नों के लिए विशेष रूप से 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 अनुरोध भेजें
for url in urls:
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}")
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)
जब हम पायथन के साथ एक ईकॉमर्स वेबसाइट को परिमार्जन करने का प्रयास करते हैं, तो हमें यह समझने की आवश्यकता होती है कि अधिकांश वेबसाइटों में एंटी-बॉट सॉफ्टवेयर के कुछ रूप होते हैं। परदे के पीछे और घूर्णन उपयोगकर्ता एजेंटों का उपयोग करना उनके संदेह को कम करने में मदद कर सकता है।
आईपी-प्राधिकरण के साथ प्रॉक्सी का उपयोग करना:
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)
अंत में, निकाले गए डेटा को 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
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 को स्वचालित चिमटा प्रदान करने के लिए अनुरोधों के साथ, एंटी-बॉट एपीआई के कारण किसी भी वर्कफ़्लो रुकावट के बिना साइट को परिमार्जन करना संभव है। अंत में, ईकॉमर्स वेब स्क्रैपिंग करते समय हमेशा नैतिक नियमों का पालन करना आवश्यक है।
टिप्पणियाँ: 0