ای ریٹیلرز جیسے ایلیکسپریس سے معلومات کو ننگا کرنا مصنوعات کی معلومات جمع کرنے ، قیمتوں میں اتار چڑھاو کی نگرانی ، جائزے جمع کرنے اور اسی طرح کے لئے انتہائی فائدہ مند ثابت ہوسکتا ہے۔ اس مضمون میں ، ہم مصنوعات (جیسے نام ، قیمت ، درجہ بندی ، وغیرہ) کے بارے میں معلومات حاصل کرنے کے عمل کو تلاش کریں گے اور کھرچنے والی مصنوعات کے جائزوں کا بھی جائزہ لیں گے۔ ہم یہ بھی ظاہر کریں گے کہ پروڈکٹ یو آر ایل کو پاس کرکے ، خود بخود پروڈکٹ آئی ڈی کو بازیافت کرکے ، اور ڈیٹا کو سی ایس وی فائل میں محفوظ کرکے کھرچنی کو متحرک بنانے کا طریقہ بھی ظاہر کریں گے۔
اس ٹیوٹوریل میں متحرک مواد اور جائزہ لینے کے اعداد و شمار کو لانے کے لئے درخواستوں کو پیش کرنے کے لئے ڈرامہ رائٹ کا استعمال کیا جائے گا۔ ہم یہ بھی یقینی بنائیں گے کہ کھرچنا اخلاقی ہے اور بہترین طریقوں کی تعمیل کرتا ہے۔
اس سے پہلے کہ ہم شروع کریں ، اس بات کو یقینی بنائیں کہ آپ کے پاس درج ذیل ازگر کی لائبریریاں انسٹال ہوں:
آپ مندرجہ ذیل کمانڈز چلا کر یہ پیکیجز انسٹال کرسکتے ہیں:
# 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
یہ ڈرامہ نگار کے لئے مناسب طریقے سے کام کرنے کے لئے ضروری براؤزر ڈاؤن لوڈ اور ترتیب دے گا۔
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'
ایک بار جب ہمارے پاس صفحہ کا مواد ہوجائے تو ، ہم 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 کا استعمال کرتا ہے۔
ایلیکسپریس کے پاس مصنوعات کے جائزے لانے کے لئے ایک الگ API اختتامی نقطہ ہے۔ آپ URL سے پروڈکٹ ID متحرک طور پر نکال سکتے ہیں اور درخواستوں کے ذریعہ جائزے لانے کے لئے استعمال کرسکتے ہیں۔ اس فنکشن میں:
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
مصنوعات کی تفصیلات اور جائزوں کو ختم کرنے کے بعد ، ہم اس ڈیٹا کو پانڈاس لائبریری کا استعمال کرتے ہوئے سی ایس وی فائل میں محفوظ کرتے ہیں۔
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 فائلوں میں محفوظ کیے جاتے ہیں۔
یہ ہے کہ مکمل متحرک ورک فلو کس طرح کام کرتا ہے:
# 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))
جب اعداد و شمار کو ختم کرتے ہو تو ، اخلاقی رہنما خطوط پر عمل کرنا ضروری ہے:
ان رہنما خطوط پر عمل کرنے سے آپ کو اخلاقی اور ذمہ داری کے ساتھ کھرچنے میں مدد ملے گی ، جو صارفین اور ایلیکسپریس سسٹم دونوں کے لئے خطرات کو کم سے کم کریں گے۔
تبصرے: 0