Python کے ساتھ Walmart کا ڈیٹا اسکریپ کرنے کی گائیڈ

تبصرے: 0

کاروباری ذہانت، تحقیق، اور تجزیہ ان بے شمار امکانات میں سے چند ہیں جو ویب اسکریپنگ کے ذریعے ممکن ہوتی ہیں۔ Walmart جیسی مکمل کاروباری ہستی ہمارے لیے ضروری معلومات اکٹھی کرنے کے لیے ایک بہترین ڈھانچہ فراہم کرتی ہے۔ ہم بآسانی Walmart کا ڈیٹا جیسے کہ نام، قیمت، اور ریویو کی معلومات ان کی متعدد ویب سائٹس سے مختلف اسکریپنگ تکنیکوں کے ذریعے حاصل کر سکتے ہیں۔

اس مضمون میں ہم اس عمل کو تفصیل سے بیان کریں گے: Walmart کا ڈیٹا کیسے اسکریپ کریں۔ ہم HTTP درخواستیں بھیجنے کے لیے requests اور موصول شدہ HTML دستاویزات کو پارس کرنے کے لیے lxml استعمال کریں گے۔

Walmart کا ڈیٹا اسکریپ کرنے کے لیے Python کیوں استعمال کریں؟

جب بات مختلف ریٹیل سائٹس سے پراڈکٹ ڈیٹا اسکریپ کرنے کی ہو تو Python دستیاب سب سے مؤثر اختیارات میں سے ایک ہے۔ یہاں بتایا جا رہا ہے کہ یہ کس طرح بخوبی ایکسٹریکشن پروجیکٹس میں ضم ہو جاتی ہے:

  1. اعلی درجے کی لائبریریاں۔ ویب تعامل کے لیے requests اور HTML پارسنگ کے لیے lxml کی موجودگی آپ کو بے حد آسانی اور مؤثریت کے ساتھ وسیع آن لائن کیٹلاگ اسکریپ کرنے کی سہولت دیتی ہے۔
  2. استعمال میں آسانی۔ آسان syntax کے ساتھ، صارفین تھوڑی یا کوئی پیشگی مہارت کے بغیر ڈیٹا ریٹریول کے عمل کو پروگرام کر سکتے ہیں اور فوراً کام شروع کر سکتے ہیں۔
  3. کمیونٹی سپورٹ۔ ریٹیل ویب سائٹس کی پیچیدگی کا مطلب یہ ہے کہ مسائل کے حل کے لیے کمیونٹی سے بھرپور وسائل اور مدد دستیاب ہے۔
  4. ڈیٹا ہینڈلنگ: تفصیلی تجزیہ۔ Pandas کی مدد سے ڈیٹا ہینڈلنگ اور Matplotlib کے ذریعے بصری نمائندگی کے ساتھ، Python صارف کو وسیع پیمانے پر ڈیٹا اکٹھا کرنے اور تجزیہ کرنے کے قابل بناتا ہے۔
  5. ڈائنامک مواد کا انتظام۔ Selenium کے ساتھ، ڈائنامک ویب عناصر کے ساتھ تعامل ممکن ہوتا ہے جو یہ یقینی بناتا ہے کہ جاوا اسکرپٹ سے لوڈ ہونے والے صفحات سے بھی وسیع پیمانے پر ڈیٹا اکٹھا کیا جا سکے۔
  6. موثر اسکیلنگ۔ بڑے اور چھوٹے دونوں ڈیٹاسیٹس کو سنبھالنے کی صلاحیت کے ساتھ، Python طویل عرصے تک بہترین کارکردگی دکھاتا ہے، حتیٰ کہ جب اسے وسیع پیمانے پر ڈیٹا ایکسٹریکشن سرگرمیوں سے گزارا جائے۔

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

اب آئیے Walmart ویب اسکریپنگ ٹول بنانے کا عمل شروع کرتے ہیں۔

Walmart کا ڈیٹا اسکریپ کرنے کے لیے ماحول کی ترتیب

شروع کرنے کے لیے، یقینی بنائیں کہ Python آپ کے کمپیوٹر پر انسٹال ہے۔ درکار لائبریریاں pip کے ذریعے ڈاؤن لوڈ کی جا سکتی ہیں:


pip install requests
pip install  lxml
pip install urllib3

اب آئیے درج ذیل لائبریریاں درآمد کریں:

  • requests – HTTP کے ذریعے ویب صفحات حاصل کرنے کے لیے؛
  • lxml – HTML دستاویزات کے درخت بنانے کے لیے؛
  • CSV – اکٹھا کیا گیا ڈیٹا CSV فائلوں میں لکھنے کے لیے؛
  • random – پراکسی اور یوزر ایجنٹ اسٹرنگ منتخب کرنے کے لیے۔

import requests
from lxml import html
import csv
import random
import urllib3
import ssl

پروڈکٹ URLs کی وضاحت کریں

Walmart کا ڈیٹا اسکریپ کرنے کے لیے پروڈکٹ URLs کی فہرست اس طرح شامل کی جا سکتی ہے۔


product_urls = [
    'link with https',
    'link with https',
    'link with https'
]

یوزر-ایجنٹ اسٹرنگز اور پراکسیز

جب Walmart کی ویب اسکریپنگ کی جائے تو یہ بہت ضروری ہے کہ درست HTTP ہیڈرز، خاص طور پر User-Agent ہیڈر پیش کیا جائے تاکہ اصل براؤزر کی نقل کی جا سکے۔ مزید یہ کہ، سائٹ کے اینٹی-بوٹ سسٹمز کو گھومتے ہوئے پراکسی سرورز استعمال کر کے بھی بائی پاس کیا جا سکتا ہے۔ نیچے دیے گئے مثال میں، User-Agent اسٹرنگز کے ساتھ ساتھ پراکسی سرور کی اجازت IP ایڈریس کے ذریعے شامل کرنے کی ہدایات بھی دی گئی ہیں۔


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 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]

درخواست کے لیے ہیڈرز

درخواست کے ہیڈرز اس طرح سیٹ کیے جانے چاہئیں کہ وہ کسی صارف کے براؤزر سے آنے والے معلوم ہوں۔ یہ Walmart کا ڈیٹا اسکریپ کرنے میں بہت مددگار ہوگا۔ یہاں ایک مثال دی جا رہی ہے کہ یہ کیسا دکھے گا:


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-IN,en;q=0.9',
    'dnt': '1',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
}

ڈیٹا اسٹوریج کو شروع کریں

پہلا قدم یہ ہے کہ ایک ایسا ڈھانچہ بنایا جائے جو پروڈکٹ کی معلومات کو قبول کرے۔


product_details = []

URL صفحات کو شمار کرنے کا طریقہ درج ذیل ہے: ہر URL صفحے کے لیے، ایک GET درخواست بھیجی جاتی ہے جس میں ایک تصادفی طور پر منتخب کیا گیا User-Agent اور پراکسی استعمال ہوتا ہے۔ جب HTML جواب واپس آتا ہے تو اسے پروڈکٹ کی تفصیلات جیسے نام، قیمت، اور ریویوز کے لیے پارس کیا جاتا ہے۔ متعلقہ تفصیلات کو ڈکشنری ڈیٹا اسٹرکچر میں محفوظ کیا جاتا ہے جو بعد میں پہلے سے بنائی گئی فہرست میں شامل کر دی جاتی ہیں۔


for url in product_urls:
   headers['user-agent'] = random.choice(user_agents)
   proxies = {
       'http': f'http://{random.choice(proxy)}',
       'https': f'http://{random.choice(proxy)}',
   }
   try:
       # Send an HTTP GET request to the URL
       response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
       print(response.status_code)
       response.raise_for_status()
   except requests.exceptions.RequestException as e:
       print(f'Error fetching data: {e}')

   # Parse the HTML content using lxml
   parser = html.fromstring(response.text)
   # Extract product title
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # Extract product price
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # Extract review details
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # Store extracted details in a dictionary
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # Append product details to the list
   product_details.append(product_detail)

عنوان:

1.png

قیمت:

2.png

ریویو کی تفصیل:

3.png

ڈیٹا کو CSV میں محفوظ کریں

  1. ایک نئی فائل بنائیں جس میں فائل کی قسم CSV ہو اور اسے لکھنے کے موڈ پر سیٹ کریں۔
  2. CSV فائل کے فیلڈ نام (کالمز) متعین کریں۔
  3. ڈکشنری کو CSV فائل میں لکھنے کے لیے، ایک csv.DictWriter آبجیکٹ بنائیں۔
  4. CSV فائل کی ہیڈر رو لکھیں۔
  5. product_details میں موجود ہر ڈکشنری کے لیے، لوپ کریں اور ڈکشنری کو CSV فائل میں ایک رو کے طور پر لکھیں۔

with open('walmart_products.csv', 'w', newline='') as csvfile:
    fieldnames = ['title', 'price', 'review_details']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for product_detail in product_details:
        writer.writerow(product_detail)

مکمل کوڈ

جب Walmart کی ویب اسکریپنگ کی جائے تو Python کا مکمل اسکرپٹ نیچے فراہم کیے گئے کی طرح نظر آئے گا۔ یہاں کچھ تبصرے بھی شامل ہیں تاکہ آپ کے لیے ہر حصے کو سمجھنا آسان ہو جائے۔


import requests
from lxml import html
import csv
import random
import urllib3
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()


# List of product URLs to scrape Walmart data
product_urls = [
   'link with https',
   'link with https',
   'link with https'
]

# Randomized User-Agent strings for anonymity
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 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

# Proxy list for IP rotation
proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]


# Headers to mimic browser requests
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-IN,en;q=0.9',
   'dnt': '1',
   'priority': 'u=0, i',
   'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
   'sec-ch-ua-mobile': '?0',
   'sec-ch-ua-platform': '"Linux"',
   'sec-fetch-dest': 'document',
   'sec-fetch-mode': 'navigate',
   'sec-fetch-site': 'none',
   'sec-fetch-user': '?1',
   'upgrade-insecure-requests': '1',
}

# Initialize an empty list to store product details
product_details = []

# Loop through each product URL
for url in product_urls:
   headers['user-agent'] = random.choice(user_agents)
   proxies = {
       'http': f'http://{random.choice(proxy)}',
       'https': f'http://{random.choice(proxy)}',
   }
   try:
       # Send an HTTP GET request to the URL
       response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
       print(response.status_code)
       response.raise_for_status()
   except requests.exceptions.RequestException as e:
       print(f'Error fetching data: {e}')

   # Parse the HTML content using lxml
   parser = html.fromstring(response.text)
   # Extract product title
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # Extract product price
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # Extract review details
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # Store extracted details in a dictionary
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # Append product details to the list
   product_details.append(product_detail)

# Write the extracted data to a CSV file
with open('walmart_products.csv', 'w', newline='') as csvfile:
   fieldnames = ['title', 'price', 'review_details']
   writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
   writer.writeheader()
   for product_detail in product_details:
       writer.writerow(product_detail)

اضافی تجاویز

جو لوگ Python کو Walmart اسکریپنگ API کے ساتھ استعمال کر رہے ہیں، ان کے لیے یہ ضروری ہے کہ وہ مضبوط طریقے تیار کریں جو مؤثر طریقے سے Walmart کی قیمتیں اور ریویو نتائج اسکریپ کریں۔ یہ API وسیع پروڈکٹ ڈیٹا تک براہ راست رسائی فراہم کرتی ہے، جو قیمتوں اور صارفین کی رائے پر ریئل ٹائم تجزیہ کو آسان بناتی ہے۔

ان مخصوص حکمت عملیوں کو اپنانا اکٹھا کی گئی معلومات کی درستگی اور دائرہ کار کو بڑھاتا ہے، جس سے کاروبار مارکیٹ میں تبدیلیوں اور صارفین کے رجحانات کے مطابق تیزی سے ڈھل سکتے ہیں۔ Python میں Walmart API کے اسٹریٹجک اطلاق کے ذریعے کمپنیاں اپنے ڈیٹا اکٹھا کرنے کے عمل کو بہتر بنا سکتی ہیں، جس سے جامع مارکیٹ تجزیہ اور باخبر فیصلہ سازی یقینی بنتی ہے۔

نتیجہ

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

تبصرے:

0 تبصرے