Scraping amazon product data with python

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

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

اس ٹیوٹوریل میں ہم دکھائیں گے کہ Amazon پر مصنوعات کے بہتر ڈیٹا تجزیے کے لیے Python کے ذریعے ویب سکریپنگ کیسے شروع کی جائے۔

ابتدائی سیٹ اپ: کیا ڈاؤن لوڈ کریں؟

Python کے ذریعے Amazon کے صفحات کی ویب سکریپنگ شروع کرنے سے پہلے، یہ ensurepip کہ آپ کا ماحول درست طور پر ترتیب دیا گیا ہے۔ اگر آپ کے کمپیوٹر پر Python 3.x انسٹال نہیں ہے تو اسے یہاں سے ڈاؤن لوڈ کر سکتے ہیں۔ https://www.python.org/.

  • Visual Studio Code (VS Code)

تمام ضروری کمانڈز چلانے کے لیے آپ Visual Studio Code (VS Code) کا ٹرمینل استعمال کر سکتے ہیں۔ VS Code کو سرکاری ویب سائٹ اور اپنے آپریٹنگ سسٹم کے لیے انسٹالیشن کی ہدایات پر عمل کریں۔

اپنا Python ماحول ترتیب دینے کے لیے:

  • VS Code کھولیں اور سائڈبار میں مربع آئیکن پر کلک کر کے Python ایکسٹینشن انسٹال کریں۔
  • مینو میں ٹرمینل – نیا ٹرمینل منتخب کر کے VS Code میں ٹرمینل کھولیں۔
  • چیک کریں کہ آیا ان میں سے کسی ایک کمانڈ کو چلا کر Python انسٹال ہے:

python --version
      
        

      


python3 --version
      
        

      

مصنوعے کے صفحے کو درخواست بھیجنا

*درخواست بھیجنے سے پہلے ہمیں وہ لائبریریاں بھی import کرنی ہوں گی جو ہم نے ابھی انسٹال کی ہیں:

اگر Python انسٹال نہیں ہے تو آپ کو نہیں ملا: python. اگر سب کچھ درست کام کر رہا ہو تو آپ کو موجودہ ورژن نظر آئے گا، جیسا کہ ذیل میں دکھایا گیا ہے۔

نیا پروجیکٹ فولڈر بنائیں:

  • VS Code میں وہ فولڈر کھولیں جس میں آپ پروجیکٹ بنانا چاہتے ہیں۔ اس کے لیے فائل – فولڈر کھولیں۔ منتخب کریں۔ پھر اپنی اسکرپٹ کے لیے نئی Python فائل بنائیں، مثلاً amazon_scraper.py

Python کے لیے تھرڈ پارٹی لائبریریاں انسٹال کریں

اس مرحلے میں ہمیں pip. پپ، جسے pip3 بھی کہا جاتا ہے، Python کا پیکیج مینجمنٹ سسٹم ہے جو سافٹ ویئر پیکیجز کو انسٹال اور منظم کرنے کے لیے استعمال ہوتا ہے۔

  • ٹرمینل کھولنے کے بعد آپ pip، جو Python کا پیکیج انسٹالر ہے، کے ذریعے ضروری لائبریریاں انسٹال کر سکتے ہیں۔ پہلے چیک کریں کہ pip پہلے سے انسٹال ہے یا نہیں:

* کو انسٹال کرنے کے لیے pip استعمال کیا جا سکتا ہے۔ ensurepip کے لیے ٹرمینل میں ان میں سے ایک کمانڈ لکھیں:ٹرمینل:


python -m ensurepip
      
        

      


python3 -m ensurepip
      
        

      

  • اب ضروری لائبریریاں انسٹال کرنے کے لیے pip استعمال کریں۔ ہمیں “requests”، “beautifulsoup4″، “pandas”، “lxml” اور “html5lib”.

pip3 install requests
pip3 install beautifulsoup4
pip3 install pandas
pip3 install lxml
pip3 install html5lib






یہ لائبریریاں کیوں ضروری ہیں؟

    1. Requests: اس لائبریری کے ذریعے ہم Amazon کے صفحے سے HTTP کنکشن قائم کر سکتے ہیں۔ یہ ہدف کے صفحے سے خام HTML مواد حاصل کرنے میں مدد دیتی ہے۔
    2. Beautiful Soup: یہ طاقتور ٹول Requests لائبریری کے ذریعے حاصل ہونے والے خام HTML سے مطلوبہ ڈیٹا نکالنے میں مدد دیتا ہے۔
    3. Pandas: ڈیٹا میں تبدیلی اور تجزیے کے لیے استعمال ہوتی ہے۔ آپ سکریپ کیا گیا ڈیٹا مؤثر تجزیے اور CSV جیسے فارمیٹس میں export کرنے کے لیے DataFrame میں ترتیب دے سکتے ہیں۔
    4. lxml: XML اور HTML دستاویزات کو تیزی سے parse کرنے کے لیے ایک طاقتور لائبریری ہے۔
    5. html5lib: HTML کو parse کرنے کے لیے خالص Python لائبریری ہے جو HTML5 specifications کی پیروی کرتی ہے۔

مصنوعے کے عناصر کی ویب سکریپنگ

آئیے مرکزی عمل شروع کرتے ہیں۔ Amazon پر دستیاب معلومات میں سے ہم ان عناصر کی ویب سکریپنگ پر توجہ دیں گے:

  1. مصنوعے کا نام؛
  2. درجہ بندی
  3. قیمت؛
  4. تصاویر؛
  5. تفصیل؛

اس ٹیوٹوریل کے لیے ہم نے یہ مصنوعہ منتخب کیا ہے: https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY

مصنوعے کے صفحے کو درخواست بھیجنا

*درخواست بھیجنے سے پہلے ہمیں وہ لائبریریاں بھی import کرنی ہوں گی جو ہم نے ابھی انسٹال کی ہیں:


import requests
from bs4 import BeautifulSoup
import pandas as pd





اس مرحلے میں، ہم Amazon پروڈکٹ پیج URL کو اس کے HTML مواد کو بازیافت کرنے کے لیے ایک HTTP درخواست بھیجیں گے۔ کا استعمال کرتے ہوئے درخواستیں لائبریری، آپ ویب صفحہ تک رسائی کے لیے ویب براؤزر کی درخواست کی تقلید کر سکتے ہیں۔ جیسے مناسب ہیڈر شامل کریں۔ صارف ایجنٹ ایک حقیقی براؤزر کی نقل کرنے اور کنکشن کی ناکامی کو روکنے کے لیے۔ سرور کا جواب، صفحہ کے HTML مواد پر مشتمل، پھر مزید پروسیسنگ اور ڈیٹا نکالنے کے لیے محفوظ کیا جاتا ہے۔


import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Accept-Language': 'en-US, en;q=0.5'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')













پروڈکٹ کا نام

  • مقام

ایک بار ہم معائنہ کریں۔ عنوان سے ہم پائیں گے کہ عنوان کا متن اندر واقع ہے۔ h1 ٹیگ کے ساتھ شناختی عنوان. آئیے اپنی فائل پر واپس جائیں اور Amazon سے اس معلومات کو نکالنے کے لیے کوڈ لکھیں۔

  • سکریپ پروڈکٹ کا نام

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

* کا استعمال کرتے ہوئے متن خصوصیت سے ہم متن سے معلومات نکال سکتے ہیں۔


product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)





اس کوڈ کو چلانے کے بعد، ہمارے پاس اس طرح کا نتیجہ ہوگا۔ ٹرمینل:

مصنوعات کی تصاویر

  • مقام

Amazon پروڈکٹ پیج سے پروڈکٹ کی تصاویر کو ویب سکریپنگ کرنے کے لیے، آپ کو HTML عناصر کو تلاش کرنے کی ضرورت ہے جن میں تصویری URL موجود ہیں۔ Amazon پروڈکٹ کے صفحات پر، تصاویر اکثر ‘کے اندر محفوظ کی جاتی ہیں۔img’ ٹیگز Amazon پر متحرک تصاویر کے لیے ایک عام کلاس ہے ‘ایک متحرک تصویر’.

  • مصنوعات کی تصاویر کو ویب سکریپنگ کرنا

استعمال کریں۔ خوبصورت سوپ درخواست سے حاصل کردہ HTML مواد کو پارس کرنے کے لیے۔ نکالیں’src’ ہر ایک سے وصفimg’ ٹیگ، جس میں تصویر کا URL ہوتا ہے۔


image_tags = soup.find_all('img', {'class':'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)





*کبھی کبھی اس کوڈ کو ٹائپ کرنے کے بعد مطلوبہ نتائج حاصل کرنے میں کچھ مسائل پیش آ سکتے ہیں۔ اگر یہ 0 امیجز دکھاتا ہے تو HTML ڈھانچے کا بہتر طور پر معائنہ کریں اور ensurepip کہ آپ کو صحیح کلاس اور وصف ملا ہے۔ ایسے معاملات میں، آپ اس کوڈ کو آزما سکتے ہیں:


if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
    image_tags = soup.find_all('img')
    product_images = []
    for img_tag in image_tags:
     image_url = img_tag.get('src')
      if image_url:
         product_images.append(image_url)

    print('Product Images:', product_images)
else:
    print(f"Request failed with status code: {response.status_code}")














یہ ایک فہرست میں مصنوعات کی تمام ہائی ریزولوشن تصاویر کو واپس کر دے گا۔

* Amazon پروڈکٹ کے صفحات میں اکثر ایک پروڈکٹ کے لیے متعدد تصاویر شامل ہوتی ہیں۔ فہرست میں موجود تمام عناصر پر کارروائی کرکے تمام متعلقہ تصاویر کیپچر کریں۔

مصنوعات کی درجہ بندی

  • مقام

آپ پہلے میں درجہ بندی تلاش کر سکتے ہیں ‘میں ٹیگ کرتا ہوں’ کلاس کے ساتھa-icon-alt’.

* اس بات کو ensurepip کہ آپ جس Amazon پروڈکٹ پیج کو سکریپ کر رہے ہیں اس کے مخصوص HTML ڈھانچے کے مطابق کلاس کا نام ایڈجسٹ کریں۔ اگر کلاس کا نام مختلف ہے، تو آپ کو تبدیل کرنے کی ضرورت ہوگی۔ ‘a-icon-alt’ کلاس کے صحیح نام کے ساتھ۔

  • سکریپ پروڈکٹ ریٹنگ

اب پروڈکٹ کی درجہ بندی نکالنے کے لیے، آپ Amazon پروڈکٹ پیج پر درجہ بندی کی نمائندگی کرنے والے HTML عنصر کو تلاش کریں گےکلاس’ وصف، جیسے ‘a-icon-alt. ایک بار مل جانے کے بعد، آپ عنصر کے متنی مواد کو بازیافت کرتے ہیں، جو درجہ بندی کی قدر کی نمائندگی کرتا ہے، اور پھر اسے مزید کارروائی کے لیے صاف کریں۔


product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)
      




آپ یہ نتیجہ دیکھیں گے:

پروڈکٹ کی قیمت

  • مقام

پروڈکٹ کی قیمت نکالنے کے لیے، ہم قیمت کو ظاہر کرنے والے HTML عنصر کی شناخت کریں گے، خاص طور پر وہ جو ریٹنگ کے بالکل نیچے واقع ہے۔ Amazon پروڈکٹ پیج پر، یہ قیمت عام طور پر ‘مدت’ کلاس کے ساتھ ٹیگ کریں’ایک قیمت’. ایک بار جب آپ اسے تلاش کر لیں’مدت’ ٹیگ، آپ اس کے پہلے پر تشریف لے سکتے ہیںمدت’ اصل قیمت کی قیمت کو بازیافت کرنے کے لیے ٹیگ۔

  • سکریپ پروڈکٹ کی قیمت

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


product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)
      
        

      

نتیجہ یہ ہوگا:

مصنوعات کی تفصیل؛

  • مقام

Amazon پروڈکٹ پیج سے پروڈکٹ کی تفصیل؛ کو ویب سکریپنگ کرنے کے لیے، آپ کو HTML عناصر کو تلاش کرنے کی ضرورت ہے جن میں تفصیل؛ موجود ہے۔ Amazon کی مصنوعات کی وضاحتیں اکثر ایک مخصوص ‘کے اندر پائی جاتی ہیں۔div’ یا’مدت’ کے ساتھ ٹیگ کریں’آئی ڈی پروڈکٹ کی تفصیل؛’. اگر مخصوص ‘div’ نہیں ملا، یہ چیک کرتا ہے ‘ال’ کلاس کے ساتھایک غیر ترتیب شدہ فہرست بلٹ پوائنٹ کی تفصیل؛ کے لیے۔

*تفصیل؛ کی تفصیل؛ات ‘کے اندر محفوظ ہیںtr’ کلاس کے ساتھ ٹیگایک وقفہ کرنا-چھوٹا’. ایک بار جب آپ ان کو تلاش کرتے ہیں تو آپ کو دونوں کو تلاش کرنا ہوگا۔مدت’ متن تلاش کرنے کے لیے اس کے نیچے۔

  • سکریپ پروڈکٹ کی تفصیل؛

اس اسکرپٹ کو چلا کر، آپ کو ‘سے پروڈکٹ کی تفصیل؛ نکالنے کے قابل ہونا چاہیے۔فیچر گولیاں Amazon پروڈکٹ پیج کا سیکشن۔ یہ ایک عام سیکشن ہے جس میں پروڈکٹ کی خصوصیات کو بیان کرنے والے بلٹ پوائنٹس ہوتے ہیں۔


description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)





آپ کو یہ ملے گا:

تمام مطلوبہ معلومات کو سکریپ کرنے کے بعد، آپ ڈیٹا کو لغت میں محفوظ کر سکتے ہیں۔ پھر، آپ اس لغت کو a میں تبدیل کر سکتے ہیں۔ پانڈا ڈیٹا فریم آسان ڈیٹا ہیرا پھیری اور ڈسپلے کے لیے۔


product_info = {
   'Name': product_name,
   'Rating': product_rating,
   'Price': product_price,
   'Images': product_images,
   'Description': product_description
}


df = pd.DataFrame([product_info])
print(df)













مکمل کوڈ

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

ابھی کے لیے، کوڈ اس طرح لگتا ہے۔ اس مرحلہ وار ٹیوٹوریل پر عمل کرکے، آپ دیکھ سکتے ہیں کہ کوڈ کا ہر حصہ کیسے کام کرتا ہے اور اپنی مخصوص ضروریات کو پورا کرنے کے لیے مزید تبدیلیاں کر سکتے ہیں۔


import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'

headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   'Accept-Language': 'en-US, en;q=0.5'
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')

product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)

if response.status_code == 200:
   soup = BeautifulSoup(response.content, 'html.parser')
   image_tags = soup.find_all('img')
   product_images = []

   for img_tag in image_tags:
       image_url = img_tag.get('src')
       if image_url:
         
           product_images.append(image_url)

   print('Product Images:', product_images)
else:
   print(f"Request failed with status code: {response.status_code}")

product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)

product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)

image_tags = soup.find_all('img', {'class': 'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)

description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)

product_info = {
   'Name': product_name,
   'Rating': product_rating,
   'Price': product_price,
   'Images': product_images,
   'Description': product_description
}

df = pd.DataFrame([product_info])
print(df)



























































جب آپ اسکرپٹ چلاتے ہیں تو ٹیبلر فارمیٹ آپ کے Python کنسول یا ٹرمینل میں ظاہر ہوتا ہے۔ اسکرپٹ کو چلانے کے بعد، ڈیٹا فریم براہ راست ٹرمینل پر پرنٹ کیا جاتا ہے، جہاں آپ قطاروں اور کالموں میں منظم ڈیٹا دیکھ سکتے ہیں۔

Python کے ساتھ Amazon کے صفحات کو ویب سکریپنگ کرنے کے لئے نکات:

  1. Amazon کی سروس کی شرائط کا احترام کریں؛
  2. HTML کو احتیاط سے پارس کریں اور سیکیورٹی چیک مکمل کریں۔
  3. اپنے کوڈ کو باقاعدگی سے اپ ڈیٹ کریں کیونکہ Amazon کے صفحات کی ساخت تبدیل ہو سکتی ہے۔
  4. مناسب ہیڈر استعمال کریں جیسے ‘User-Agent’ اور ‘Accept-Language’؛
  5. پراکسی اور IP روٹیشن کا استعمال کریں۔

Amazon کو سکریپ کرنے کے لیے DataImpulse آزمائیں۔

پراکسی استعمال کرتے وقت، آپ مختلف IPs سے درخواستیں بھیجتے ہیں – گویا مختلف آلات، مقامات اور ٹائم زونز سے۔ سائٹس کبھی بھی آپ پر شک نہیں کریں گی، آپ سے کیپچا درج کرنے کے لیے کہیں گی، یا آپ پر پابندی بھی نہیں لگائیں گی۔ ہمارے ساتھ، آپ کو ملے گا:

  • تازہ ترین ڈیٹا؛
  • IP گردش، کوئی بلیک لسٹ شدہ IPs نہیں؛
  • تصدیق کے مسائل کو ٹھیک کرنا؛
  • بدیہی APIs جو Amazon کے HTML ڈھانچے میں ہونے والی تبدیلیوں کو تیزی سے ڈھال لیتے ہیں۔
  • طاقتور بنیادی ڈھانچہ، بڑے سکریپنگ منصوبوں کے لیے بہترین؛
  • 24/7 انسانی مدد۔

پر ہم سے رابطہ کریں۔ [email protected] یا “پر کلک کریںابھی کوشش کریں۔“اوپر دائیں کونے میں بٹن۔

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

Share article: