कैसे अजगर का उपयोग करके Aliexpress डेटा को परिमार्जन करें

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

ई-रिटेलर्स जैसे कि Aliexpress से जानकारी को उजागर करना उत्पाद जानकारी एकत्र करने, मूल्य में उतार-चढ़ाव की निगरानी, ​​समीक्षाओं और इसी तरह के लिए अत्यधिक फायदेमंद हो सकता है। इस लेख में, हम उत्पादों के बारे में जानकारी प्राप्त करने की प्रक्रिया का पता लगाएंगे (जैसे नाम, मूल्य, रेटिंग, आदि) और स्क्रैपिंग उत्पाद समीक्षाओं की भी समीक्षा करें। हम यह भी प्रदर्शित करेंगे कि उत्पाद URL को पारित करके स्क्रैपर को कैसे गतिशील बनाया जाए, स्वचालित रूप से उत्पाद आईडी को पुनः प्राप्त किया जाए, और डेटा को CSV फ़ाइल में सहेजा जाए।

यह ट्यूटोरियल डायनेमिक कंटेंट को रेंडर करने और समीक्षा डेटा लाने के लिए अनुरोध करने के लिए नाटककार का उपयोग करेगा। हम यह भी सुनिश्चित करेंगे कि खुरचनी नैतिक है और सर्वोत्तम प्रथाओं का अनुपालन करता है।

आवश्यकताएँ

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

  • नाटककार: ब्राउज़र के साथ बातचीत करने और गतिशील सामग्री को प्रस्तुत करने के लिए उपयोग किया जाता है।
  • अनुरोध: Aliexpress API के माध्यम से समीक्षा लाने के लिए उपयोग किया जाता है।
  • LXML: HTML सामग्री को पार्स करने के लिए।
  • पंडास: इसका उपयोग डेटा को CSV फ़ाइल में सहेजने के लिए किया जाता है।

आप निम्न आदेशों को चलाकर इन पैकेजों को स्थापित कर सकते हैं:


# स्थापित करना Playwright
pip install playwright


# स्थापित करना Requests
pip install requests


# HTML को पार्स करने के लिए LXML स्थापित करें
pip install lxml


# डेटा हेरफेर और बचत के लिए पांडा स्थापित करें
pip install pandas

नाटककार स्थापित करने के बाद, आपको आवश्यक ब्राउज़र बायनेरिज़ भी स्थापित करना होगा:


playwright install

यह नाटककार के लिए आवश्यक ब्राउज़र को ठीक से काम करने के लिए डाउनलोड और सेट करेगा।

चरण 1। नाटककार के साथ अनुरोध भेजना

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'

चरण 2। उत्पाद डेटा निकालना

एक बार जब हमारे पास पृष्ठ सामग्री होती है, तो हम 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 का उपयोग करता है।

चरण 3। स्क्रैपिंग उत्पाद समीक्षा

Aliexpress में उत्पाद समीक्षा प्राप्त करने के लिए एक अलग API समापन बिंदु है। आप URL से डायनामिक रूप से उत्पाद आईडी निकाल सकते हैं और अनुरोधों के माध्यम से समीक्षा करने के लिए इसका उपयोग कर सकते हैं। इस फ़ंक्शन में:

  1. उत्पाद आईडी को उत्पाद URL से गतिशील रूप से निकाला जाता है।
  2. हम Aliexpress Review API का उपयोग करके समीक्षाएँ प्राप्त करते हैं।
  3. समीक्षा ग्रंथों को निकाला जाता है और एक सूची के रूप में लौटा दिया जाता है।

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

चरण 4। सीएसवी फ़ाइल में डेटा सहेजना

उत्पाद विवरण और समीक्षाओं को स्क्रैप करने के बाद, हम इस डेटा को पंडास लाइब्रेरी का उपयोग करके एक 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 फ़ाइलों में सहेजा जाता है।

चरण 5। गतिशील उत्पाद आईडी पुनर्प्राप्ति

यहां बताया गया है कि पूर्ण गतिशील वर्कफ़्लो कैसे काम करता है:

  1. किसी भी Aliexpress उत्पाद URL पास करें।
  2. उत्पाद आईडी URL से निकाला जाता है।
  3. खुरचनी उत्पाद डेटा और समीक्षा प्राप्त करती है।
  4. डेटा को शामिल उत्पाद आईडी के साथ 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))

नैतिक विचार

डेटा को स्क्रैप करते समय, नैतिक दिशानिर्देशों का पालन करना महत्वपूर्ण है:

  1. Aliexpress की सेवा की शर्तों का सम्मान करें: वेबसाइट को स्क्रैप करने से पहले हमेशा सेवा की शर्तों की जाँच करें। प्रतिबंधित होने से रोकने के लिए उनके नियमों का उल्लंघन करने से बचें।
  2. आपके अनुरोधों को थ्रॉटल करें: थोड़े समय में बहुत अधिक अनुरोध भेजना उनके सर्वर को ओवरलोड कर सकता है। अनुरोधों के बीच देरी को जोड़ने पर विचार करें।
  3. व्यक्तिगत डेटा से बचें: उचित सहमति के बिना व्यक्तिगत जानकारी एकत्र या परिमार्जन न करें।

इन दिशानिर्देशों का पालन करने से आपको नैतिक और जिम्मेदारी से खुरचने में मदद मिलेगी, दोनों उपयोगकर्ताओं और Aliexpress सिस्टम के लिए जोखिमों को कम करते हैं।

टिप्पणियाँ:

0 टिप्पणियाँ