ई-रिटेलर्स जैसे कि Aliexpress से जानकारी को उजागर करना उत्पाद जानकारी एकत्र करने, मूल्य में उतार-चढ़ाव की निगरानी, समीक्षाओं और इसी तरह के लिए अत्यधिक फायदेमंद हो सकता है। इस लेख में, हम उत्पादों के बारे में जानकारी प्राप्त करने की प्रक्रिया का पता लगाएंगे (जैसे नाम, मूल्य, रेटिंग, आदि) और स्क्रैपिंग उत्पाद समीक्षाओं की भी समीक्षा करें। हम यह भी प्रदर्शित करेंगे कि उत्पाद URL को पारित करके स्क्रैपर को कैसे गतिशील बनाया जाए, स्वचालित रूप से उत्पाद आईडी को पुनः प्राप्त किया जाए, और डेटा को CSV फ़ाइल में सहेजा जाए।
यह ट्यूटोरियल डायनेमिक कंटेंट को रेंडर करने और समीक्षा डेटा लाने के लिए अनुरोध करने के लिए नाटककार का उपयोग करेगा। हम यह भी सुनिश्चित करेंगे कि खुरचनी नैतिक है और सर्वोत्तम प्रथाओं का अनुपालन करता है।
शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित पायथन लाइब्रेरी स्थापित हैं:
आप निम्न आदेशों को चलाकर इन पैकेजों को स्थापित कर सकते हैं:
# स्थापित करना Playwright
pip install playwright
# स्थापित करना Requests
pip install requests
# HTML को पार्स करने के लिए LXML स्थापित करें
pip install lxml
# डेटा हेरफेर और बचत के लिए पांडा स्थापित करें
pip install pandas
नाटककार स्थापित करने के बाद, आपको आवश्यक ब्राउज़र बायनेरिज़ भी स्थापित करना होगा:
playwright install
यह नाटककार के लिए आवश्यक ब्राउज़र को ठीक से काम करने के लिए डाउनलोड और सेट करेगा।
Aliexpress उत्पाद पृष्ठ गतिशील हैं, जिसका अर्थ है कि वे जावास्क्रिप्ट के माध्यम से सामग्री लोड करते हैं। इसे संभालने के लिए, हम नाटककार, एक पायथन लाइब्रेरी का उपयोग करेंगे जो आपको एक हेडलेस ब्राउज़र को नियंत्रित करने और गतिशील सामग्री के साथ बातचीत करने की अनुमति देता है।
यहां बताया गया है कि आप एक अनुरोध कैसे भेज सकते हैं और उत्पाद पृष्ठ पर नेविगेट कर सकते हैं:
from playwright.async_api import async_playwright
async def get_page_content(url):
async with async_playwright() as p:
# यदि आवश्यक हो तो एक प्रॉक्सी के साथ ब्राउज़र लॉन्च करें (यदि प्रॉक्सी का उपयोग नहीं किया जाए तो हटाया जा सकता है)
browser = await p.firefox.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto(url, timeout=60000)
# पृष्ठ सामग्री निकालें
content = await page.content()
await browser.close()
return content
# उदाहरण URL
url = 'https://www.aliexpress.com/item/3256805354456256.html'
एक बार जब हमारे पास पृष्ठ सामग्री होती है, तो हम LXML और XPath क्वेरी का उपयोग करके उत्पाद डेटा निकाल सकते हैं। हम उत्पाद शीर्षक, मूल्य, रेटिंग, समीक्षाओं की संख्या और बेची गई वस्तुओं की संख्या जैसे विवरण एकत्र करेंगे।
from lxml.html import fromstring
def extract_product_data(content):
parser = fromstring(content)
# XPath का उपयोग करके उत्पाद विवरण निकालें
title = parser.xpath('//h1[@data-pl="product-title"]/text()')[0].strip()
price = parser.xpath('//div[@class="price--current--I3Zeidd product-price-current"]/span/text()')[0].strip()
rating = ' '.join(parser.xpath('//a[@class="reviewer--rating--xrWWFzx"]/strong/text()')).strip()
total_reviews = parser.xpath('//a[@class="reviewer--reviews--cx7Zs_V"]/text()')[0].strip()
sold_count = parser.xpath('//span[@class="reviewer--sold--ytPeoEy"]/text()')[0].strip()
product_data = {
'title': title,
'price': price,
'rating': rating,
'total_reviews': total_reviews,
'sold_count': sold_count
}
return product_data
यह कोड पृष्ठ की HTML सामग्री से प्रासंगिक उत्पाद विवरण निकालने के लिए XPath का उपयोग करता है।
Aliexpress में उत्पाद समीक्षा प्राप्त करने के लिए एक अलग API समापन बिंदु है। आप URL से डायनामिक रूप से उत्पाद आईडी निकाल सकते हैं और अनुरोधों के माध्यम से समीक्षा करने के लिए इसका उपयोग कर सकते हैं। इस फ़ंक्शन में:
import requests
def extract_product_id(url):
# URL से उत्पाद आईडी निकालें
product_id = url.split('/')[-1].split('.')[0]
return product_id
def scrape_reviews(product_id, page_num=1, page_size=10):
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'en-IN,en;q=0.9',
'referer': f'https://www.aliexpress.com/item/{product_id}.html',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
}
params = {
'productId': product_id,
'lang': 'en_US',
'country': 'US',
'page': str(page_num),
'pageSize': str(page_size),
'filter': 'all',
'sort': 'complex_default',
}
response = requests.get('https://feedback.aliexpress.com/pc/searchEvaluation.do', params=params, headers=headers)
reviews = response.json()['data']['evaViewList']
# केवल समीक्षा पाठ निकालें
review_texts = [review['buyerFeedback'] for review in reviews]
return review_texts
उत्पाद विवरण और समीक्षाओं को स्क्रैप करने के बाद, हम इस डेटा को पंडास लाइब्रेरी का उपयोग करके एक CSV फ़ाइल में सहेजते हैं।
import pandas as pd
def save_to_csv(product_data, reviews, product_id):
# CSV को उत्पाद विवरण सहेजें
df_product = pd.DataFrame([product_data])
df_product.to_csv(f'product_{product_id}_data.csv', index=False)
# CSV के लिए समीक्षा सहेजें
df_reviews = pd.DataFrame({'reviews': reviews})
df_reviews.to_csv(f'product_{product_id}_reviews.csv', index=False)
print(f"Data saved for product {product_id}.")
उत्पाद के विवरण और समीक्षाओं को आसान पहचान के लिए फ़ाइल नाम में शामिल उत्पाद आईडी के साथ अलग CSV फ़ाइलों में सहेजा जाता है।
यहां बताया गया है कि पूर्ण गतिशील वर्कफ़्लो कैसे काम करता है:
# URL से उत्पाद आईडी निकालें
def extract_product_id(url):
return url.split('/')[-1].split('.')[0]
from playwright.async_api import async_playwright
from lxml.html import fromstring
import requests
import pandas as pd
# नाटककार का उपयोग करके पृष्ठ सामग्री प्राप्त करें
async def get_page_content(url):
async with async_playwright() as p:
browser = await p.firefox.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto(url, timeout=60000)
content = await page.content()
await browser.close()
return content
# उत्पाद डेटा निकालें
def extract_product_data(content):
parser = fromstring(content)
title = parser.xpath('//h1[@data-pl="product-title"]/text()')[0].strip()
price = parser.xpath('//div[@class="price--current--I3Zeidd product-price-current"]/span/text()')[0].strip()
rating = ' '.join(parser.xpath('//a[@class="reviewer--rating--xrWWFzx"]/strong/text()')).strip()
total_reviews = parser.xpath('//a[@class="reviewer--reviews--cx7Zs_V"]/text()')[0].strip()
sold_count = parser.xpath('//span[@class="reviewer--sold--ytPeoEy"]/text()')[0].strip()
return {
'title': title,
'price': price,
'rating': rating,
'total_reviews': total_reviews,
'sold_count': sold_count
}
# URL से उत्पाद आईडी निकालें
def extract_product_id(url):
return url.split('/')[-1].split('.')[0]
# परिमार्जन समीक्षा
def scrape_reviews(product_id, page_num=1, page_size=10):
headers = {
'accept': 'application/json, text/plain, */*',
'referer': f'https://www.aliexpress.com/item/{product_id}.html',
'user-agent': 'Mozilla/5.0'
}
params = {
'productId': product_id,
'lang': 'en_US',
'page': str(page_num),
'pageSize': str(page_size),
}
response = requests.get('https://feedback.aliexpress.com/pc/searchEvaluation.do', params=params, headers=headers)
reviews = response.json()['data']['evaViewList']
return [review['buyerFeedback'] for review in reviews]
# सीएसवी के लिए उत्पाद डेटा और समीक्षा सहेजें
def save_to_csv(product_data, reviews, product_id):
pd.DataFrame([product_data]).to_csv(f'product_{product_id}_data.csv', index=False)
pd.DataFrame({'reviews': reviews}).to_csv(f'product_{product_id}_reviews.csv', index=False)
print(f'Saved into: product_{product_id}_data.csv')
print(f'Saved into: product_{product_id}_reviews.csv')
# मुख्य समारोह
async def main(url):
content = await get_page_content(url)
product_data = extract_product_data(content)
product_id = extract_product_id(url)
reviews = scrape_reviews(product_id)
save_to_csv(product_data, reviews, product_id)
# खुरचना
import asyncio
url = 'https://www.aliexpress.com/item/3256805354456256.html'
asyncio.run(main(url))
डेटा को स्क्रैप करते समय, नैतिक दिशानिर्देशों का पालन करना महत्वपूर्ण है:
इन दिशानिर्देशों का पालन करने से आपको नैतिक और जिम्मेदारी से खुरचने में मदद मिलेगी, दोनों उपयोगकर्ताओं और Aliexpress सिस्टम के लिए जोखिमों को कम करते हैं।
टिप्पणियाँ: 0