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

تبصرے: 0

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

یہ گائیڈ HTTP درخواستیں بنانے کے لئے درخواستوں کی لائبریری اور HTML مواد کو تجزیہ کرنے کے لئے LXML لائبریری کا استعمال کرے گا۔

ماحول ترتیب دینا

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

pip install requests
pip install  lxml
pip install urllib3

اگلا ، آئیے ضروری لائبریریوں کو درآمد کریں:

  • درخواستیں: ویب صفحات کو بازیافت کرنے کے لئے HTTP درخواستیں بنانے کے لئے۔
  • LXML: HTML مواد کو پارس کرنے کے لئے ؛
  • CSV: CSV فائل میں نکالا ہوا ڈیٹا لکھنے کے لئے ؛
  • بے ترتیب: بے ترتیب پراکسیوں اور صارف ایجنٹ کے تاروں کو منتخب کرنے کے لئے۔
import requests
from lxml import html
import csv
import random
import urllib3
import ssl

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

کھرچنے کے لئے والمارٹ پروڈکٹ یو آر ایل کی فہرست۔

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

صارف ایجنٹ ڈور اور پراکسی

کسی ویب سائٹ کو کھرچنے کے ل it ، یہ بہت ضروری ہے کہ کوئی صحیح ہیڈر استعمال کرے ، خاص طور پر صارف ایجنٹ ہیڈر ، تاکہ کسی حقیقی براؤزر سے درخواست کی تقلید کی جاسکے۔ مزید یہ کہ ، گھومنے والے پراکسی سرورز کا استعمال کرتے ہوئے سائٹ کے مالکان کے ذریعہ اینٹی بوٹ اقدامات کی وجہ سے کوئی بھی محدود ہونے سے بچ سکتا ہے۔ ذیل میں صارف ایجنٹ کے تاروں کی مثالیں ہیں جس کے ساتھ ساتھ اس بات کی بھی وضاحت کی گئی ہے کہ کس طرح پراکسی سرورز کو مربوط کیا جائے جن کو 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>',
]

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

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

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 درخواست بھیجی جاتی ہے۔ 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:
       # یو آر ایل کو ایک HTTP حاصل کریں درخواست بھیجیں
       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}')

   # LXML کا استعمال کرتے ہوئے HTML مواد کی تجزیہ کریں
   parser = html.fromstring(response.text)
   # مصنوعات کا عنوان نکالیں
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # مصنوعات کی قیمت نکالیں
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # جائزہ لینے کی تفصیلات نکالیں
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # ایک لغت میں اسٹور نکالے گئے تفصیلات
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # فہرست میں مصنوعات کی تفصیلات شامل کریں
   product_details.append(product_detail)

عنوان:

1.png

قیمت:

2.png

تفصیل کا جائزہ لیں:

3.png

ڈیٹا کو CSV

میں محفوظ کریں
  1. لکھنے کے لئے ایک نئی CSV فائل کھولیں۔
  2. CSV فائل کے لئے فیلڈ کے نام (کالم) کی وضاحت کریں۔
  3. CSV فائل میں لغات لکھنے کے لئے CSV.dict رائٹر آبجیکٹ بنائیں۔
  4. سی ایس وی فائل پر ہیڈر قطار لکھیں۔
  5. پروڈکٹ_ڈیٹیلز کی فہرست کے ذریعے لوپ کو سی ایس وی فائل میں ایک قطار کے طور پر ہر پروڈکٹ ڈکشنری کی فہرست بنائیں اور لکھیں۔
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)

مکمل کوڈ:

تبصرے کے ساتھ مکمل کوڈ یہ ہے کہ آپ کو بہتر طور پر سمجھنے میں مدد کریں:

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()


# کھرچنے کیلئے پروڈکٹ یو آر ایل کی فہرست
product_urls = [
   'link with https',
   'link with https',
   'link with https'
]

# گمنامی کے لئے بے ترتیب صارف ایجنٹ ڈور
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'
]

# IP گردش کے لئے پراکسی فہرست
proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]


# براؤزر کی درخواستوں کی نقالی کرنے کے لئے ہیڈر
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 = []

# ہر پروڈکٹ یو آر ایل کے ذریعے لوپ
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:
       # یو آر ایل کو ایک HTTP حاصل کریں درخواست بھیجیں
       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}')

   # LXML کا استعمال کرتے ہوئے HTML مواد کی تجزیہ کریں
   parser = html.fromstring(response.text)
   # مصنوعات کا عنوان نکالیں
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # مصنوعات کی قیمت نکالیں
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # جائزہ لینے کی تفصیلات نکالیں
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # ایک لغت میں اسٹور نکالے گئے تفصیلات
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # فہرست میں مصنوعات کی تفصیلات شامل کریں
   product_details.append(product_detail)

# نکالا ہوا ڈیٹا 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)

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

تبصرے:

0 تبصرے