ازگر کا استعمال کرتے ہوئے Aliexpress ڈیٹا کو کھرچنے کا طریقہ

تبصرے: 0

ای ریٹیلرز جیسے ایلیکسپریس سے معلومات کو ننگا کرنا مصنوعات کی معلومات جمع کرنے ، قیمتوں میں اتار چڑھاو کی نگرانی ، جائزے جمع کرنے اور اسی طرح کے لئے انتہائی فائدہ مند ثابت ہوسکتا ہے۔ اس مضمون میں ، ہم مصنوعات (جیسے نام ، قیمت ، درجہ بندی ، وغیرہ) کے بارے میں معلومات حاصل کرنے کے عمل کو تلاش کریں گے اور کھرچنے والی مصنوعات کے جائزوں کا بھی جائزہ لیں گے۔ ہم یہ بھی ظاہر کریں گے کہ پروڈکٹ یو آر ایل کو پاس کرکے ، خود بخود پروڈکٹ آئی ڈی کو بازیافت کرکے ، اور ڈیٹا کو سی ایس وی فائل میں محفوظ کرکے کھرچنی کو متحرک بنانے کا طریقہ بھی ظاہر کریں گے۔

اس ٹیوٹوریل میں متحرک مواد اور جائزہ لینے کے اعداد و شمار کو لانے کے لئے درخواستوں کو پیش کرنے کے لئے ڈرامہ رائٹ کا استعمال کیا جائے گا۔ ہم یہ بھی یقینی بنائیں گے کہ کھرچنا اخلاقی ہے اور بہترین طریقوں کی تعمیل کرتا ہے۔

ضروریات

اس سے پہلے کہ ہم شروع کریں ، اس بات کو یقینی بنائیں کہ آپ کے پاس درج ذیل ازگر کی لائبریریاں انسٹال ہوں:

  • Playwright: براؤزر کے ساتھ بات چیت کرنے اور متحرک مواد کو پیش کرنے کے لئے استعمال کیا جاتا ہے۔
  • Requests: Aliexpress API کے ذریعے جائزے لانے کے لئے استعمال کیا جاتا ہے۔
  • lxml: HTML مواد کو پارس کرنے کے لئے۔
  • Pandas: اس کا استعمال ڈیٹا کو CSV فائل میں محفوظ کرنے کے لئے کیا جاتا ہے۔

آپ مندرجہ ذیل کمانڈز چلا کر یہ پیکیجز انسٹال کرسکتے ہیں:


# Install Playwright
pip install playwright


# Install Requests
pip install requests


# Install lxml for parsing HTML
pip install lxml


# Install Pandas for data manipulation and saving
pip install pandas

ڈرامہ نگار انسٹال کرنے کے بعد ، آپ کو مطلوبہ براؤزر بائنریز بھی انسٹال کرنے کی ضرورت ہوگی:


playwright install

یہ ڈرامہ نگار کے لئے مناسب طریقے سے کام کرنے کے لئے ضروری براؤزر ڈاؤن لوڈ اور ترتیب دے گا۔

مرحلہ 1۔ ڈرامہ نگار کے ساتھ درخواستیں بھیجنا

Aliexpress پروڈکٹ پیجز متحرک ہیں ، یعنی وہ جاوا اسکرپٹ کے ذریعہ مواد کو لوڈ کرتے ہیں۔ اس کو سنبھالنے کے ل we ، ہم پلے رائٹ ، ایک ازگر لائبریری کا استعمال کریں گے جو آپ کو ہیڈ لیس براؤزر کو کنٹرول کرنے اور متحرک مواد کے ساتھ بات چیت کرنے کی سہولت دیتا ہے۔

یہ ہے کہ آپ کس طرح درخواست بھیج سکتے ہیں اور پروڈکٹ پیج پر تشریف لے سکتے ہیں:


from playwright.async_api import async_playwright

async def get_page_content(url):
    async with async_playwright() as p:
        # Launch the browser with a proxy if needed (can be removed if not using proxy)
        browser = await p.firefox.launch(
            headless=False,
            proxy={"server": '', 'username': '', 'password': ''}
        )
        page = await browser.new_page()
        await page.goto(url, timeout=60000)

        # Extract page content
        content = await page.content()
        await browser.close()
        
        return content

# Example 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)
    
    # Extract product details using 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۔ کھرچنے والی مصنوعات کے جائزے

ایلیکسپریس کے پاس مصنوعات کے جائزے لانے کے لئے ایک الگ API اختتامی نقطہ ہے۔ آپ URL سے پروڈکٹ ID متحرک طور پر نکال سکتے ہیں اور درخواستوں کے ذریعہ جائزے لانے کے لئے استعمال کرسکتے ہیں۔ اس فنکشن میں:

  1. پروڈکٹ ID کو متحرک طور پر پروڈکٹ URL سے نکالا جاتا ہے۔
  2. ہم Aliexpress جائزہ API کا استعمال کرتے ہوئے جائزے لاتے ہیں۔
  3. جائزے کے متن کو نکالا جاتا ہے اور بطور فہرست واپس کردی جاتی ہے۔

import requests

def extract_product_id(url):
    # Extract product ID from the 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']

    # Extract review text only
    review_texts = [review['buyerFeedback'] for review in reviews]
    
    return review_texts

مرحلہ 4۔ ڈیٹا کو سی ایس وی فائل میں محفوظ کرنا

مصنوعات کی تفصیلات اور جائزوں کو ختم کرنے کے بعد ، ہم اس ڈیٹا کو پانڈاس لائبریری کا استعمال کرتے ہوئے سی ایس وی فائل میں محفوظ کرتے ہیں۔


import pandas as pd

def save_to_csv(product_data, reviews, product_id):
    # Save product details to CSV
    df_product = pd.DataFrame([product_data])
    df_product.to_csv(f'product_{product_id}_data.csv', index=False)

    # Save reviews to 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}.")

مصنوعات کی تفصیلات اور جائزے آسان شناخت کے ل the فائل نام میں شامل پروڈکٹ ID کے ساتھ علیحدہ CSV فائلوں میں محفوظ کیے جاتے ہیں۔

مرحلہ 5۔ متحرک پروڈکٹ ID بازیافت

یہ ہے کہ مکمل متحرک ورک فلو کس طرح کام کرتا ہے:

  1. کسی بھی Aliexpress پروڈکٹ URL کو پاس کریں۔
  2. پروڈکٹ ID URL سے نکالا جاتا ہے۔
  3. کھرچنی مصنوعات کا ڈیٹا اور جائزے لاتا ہے۔
  4. ڈیٹا کو CSV فائلوں میں محفوظ کیا جاتا ہے جس میں شامل پروڈکٹ ID شامل ہوتا ہے۔

# Extract product ID from the 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

# Get page content using 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

# Extract product data
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
    }

# Extract product ID from the URL
def extract_product_id(url):
    return url.split('/')[-1].split('.')[0]

# Scrape reviews
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]

# Save product data and reviews to CSV
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')

# Main function
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)

# Run the scraper
import asyncio
url = 'https://www.aliexpress.com/item/3256805354456256.html'
asyncio.run(main(url))

اخلاقی تحفظات

جب اعداد و شمار کو ختم کرتے ہو تو ، اخلاقی رہنما خطوط پر عمل کرنا ضروری ہے:

  1. ایلیکسپریس کی خدمت کی شرائط کا احترام کریں: کسی ویب سائٹ کو کھرچنے سے پہلے ہمیشہ خدمت کی شرائط کی جانچ کریں۔ پابندی سے بچنے کے ل their ان کے قواعد کی خلاف ورزی سے گریز کریں۔
  2. آپ کی درخواستوں کو تھروٹل کریں: تھوڑے وقت میں بہت ساری درخواستیں بھیجنا ان کے سرورز کو اوورلوڈ کرسکتا ہے۔ درخواستوں کے مابین تاخیر کو شامل کرنے پر غور کریں۔
  3. ذاتی ڈیٹا سے پرہیز کریں: مناسب رضامندی کے بغیر ذاتی معلومات کو جمع یا کھرچیں۔

ان رہنما خطوط پر عمل کرنے سے آپ کو اخلاقی اور ذمہ داری کے ساتھ کھرچنے میں مدد ملے گی ، جو صارفین اور ایلیکسپریس سسٹم دونوں کے لئے خطرات کو کم سے کم کریں گے۔

تبصرے:

0 تبصرے