ازگر کے ساتھ ای کامرس ویب سائٹوں کو کھرچنے کا طریقہ

تبصرے: 0

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

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

مصنوعات کا ڈیٹا نکالنے کے لئے اسکرپٹ لکھنا

سکریپنگ کے عمل میں غوطہ لگانے سے پہلے ، یقینی بنائیں کہ آپ کے پاس ضروری ازگر کی لائبریریاں نصب ہیں:

pip install requests
pip install lxml

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

مرحلہ 1۔ ویب سائٹ کے HTML ڈھانچے کو سمجھنا

کسی بھی ویب سائٹ سے ڈیٹا نکالنے کے ل you ، آپ کو ویب پیج کی ساخت کو سمجھنے کی ضرورت ہے۔ ایک ویب سائٹ کا صفحہ کھولیں اور ان عناصر کا معائنہ کریں جو آپ کھرچنا چاہتے ہیں (جیسے ، مصنوعات کا نام ، خصوصیات برانڈ ، وغیرہ)۔

مرحلہ 2۔ HTTP درخواستیں بھیجنا

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


import requests

# List of product URLs to scrape
urls = [
    "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
    "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

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-US,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
    'sec-ch-ua-mobile': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    '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',
}

# Loop through each URL and send a GET request
for url in urls:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        html_content = response.text
        # Further processing will be added in subsequent steps
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

مرحلہ 3. XPath اور LXML کا استعمال کرتے ہوئے ڈیٹا نکالنا

LXML کا استعمال کرتے ہوئے ، ہم پارسڈ HTML سے مطلوبہ ڈیٹا پوائنٹس نکالیں گے۔

from lxml import html

# List to store scraped data
scraped_data = []

# Loop through each URL and send a GET request
for url in urls:
    response = requests.get(url)
    if response.status_code == 200:
        html_content = response.content
        # Parse HTML content with lxml
        tree = html.fromstring(html_content)
        
        # Extract data using XPath

        product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
        product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
        product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
        
        # Append extracted data to the list
        scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# Print the scraped data
for item in scraped_data:
    print(item)

مرحلہ 4۔ ممکنہ امور کو حل کرنا

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

آئی پی اجازت کے ساتھ پراکسیوں کا استعمال:


proxies = {
    'http': 'http://your_proxy_ip:your_proxy_port',
    'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)

Rotating User Agents:


import random

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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    # Add more user agents as needed
]

headers['user-agent'] = random.choice(user_agents)

response = requests.get(url, headers=headers)

مرحلہ 5۔ CSV فائل میں ڈیٹا کی بچت

آخر میں ، ہم مزید تجزیہ کے لئے کھرچے ہوئے ڈیٹا کو CSV فائل میں محفوظ کریں گے۔

import csv

csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# Writing data to CSV file
try:
    with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        for item in scraped_data:
            writer.writerow(item)
    print(f"Data saved to {csv_file}")
except IOError:
    print(f"Error occurred while writing data to {csv_file}")

مکمل کوڈ


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

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

# List of product URLs to scrape
urls = [
   "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
   "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

# headers
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-US,en;q=0.9',
   'cache-control': 'no-cache',
   'dnt': '1',
   'pragma': 'no-cache',
   'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
   'sec-ch-ua-mobile': '?0',
   'sec-fetch-dest': 'document',
   'sec-fetch-mode': 'navigate',
   'sec-fetch-site': 'same-origin',
   'sec-fetch-user': '?1',
   'upgrade-insecure-requests': '1',
   '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',
}

# List of user agents for rotating requests
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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   # Add more user agents as needed
]


# List of proxies for rotating requests
proxies = [
    {'http': 'http://your_proxy_ip:your_proxy_port', 'https': 'https://your_proxy_ip:your_proxy_port'},
    {'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
    # Add more proxies as needed
]

# List to store scraped data
scraped_data = []

# Loop through each URL and send a GET request
for url in urls:
   # Choose a random user agent for the request headers
   headers['user-agent'] = random.choice(user_agents)
   # Choose a random proxy for the request
   proxy = random.choice(proxies)

   # Send HTTP GET request to the URL with headers and proxy
   response = requests.get(url, headers=headers, proxies=proxy, verify=False)
   if response.status_code == 200:
       # Store the HTML content from the response
       html_content = response.content
       # Parse HTML content with lxml
       tree = html.fromstring(html_content)

       # Extract data using XPath
       product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
       product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
       product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()

       # Append extracted data to the list
       scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
   else:
       # Print error message if request fails
       print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# CSV file setup
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# Writing data to CSV file
try:
   with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
       writer = csv.DictWriter(file, fieldnames=fieldnames)
       writer.writeheader()
       for item in scraped_data:
           writer.writerow(item)
   print(f"Data saved to {csv_file}")
except IOError:
   # Print error message if writing to file fails
   print(f"Error occurred while writing data to {csv_file}")

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

تبصرے:

0 تبصرے