ازگر کا استعمال کرتے ہوئے ایمیزون جائزوں کو کھرچنے کے لئے رہنما

تبصرے: 0

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

مرحلہ 1۔ مطلوبہ لائبریریوں کو انسٹال کرنا

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

pip install requests
pip install beautifulsoup4

مرحلہ 2۔ سکریپنگ کے عمل کو تشکیل دینا

ہم ایمیزون پیج سے مصنوع کے جائزے نکالنے پر توجہ دیں گے اور سکریپنگ کے عمل کے ہر مرحلے کی جانچ پڑتال کریں گے۔

ویب سائٹ کے ڈھانچے کو سمجھنا

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

پروڈکٹ کا عنوان اور یو آر ایل :

1.png

کل درجہ بندی:

2.png

جائزہ سیکشن:

3.png

مصنف کا نام:

4.png

درجہ بندی:

5.png

تبصرہ:

6.png

HTTP درخواستیں بھیجنا

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

پراکسی

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

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

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


import requests

url = "https://www.amazon.com/Portable-Mechanical-Keyboard-MageGee-Backlit/product-reviews/B098LG3N6R/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews"

# Example of a proxy provided by the proxy service
proxy = {
    'http': 'http://your_proxy_ip:your_proxy_port',
    'https': 'https://your_proxy_ip:your_proxy_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-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',
}

# Send HTTP GET request to the URL with headers and proxy
try:
    response = requests.get(url, headers=headers, proxies=proxy, timeout=10)
    response.raise_for_status()  # Raise an exception for bad response status
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")

مرحلہ 3. خوبصورت سوپ کا استعمال کرتے ہوئے مصنوعات کی تفصیلات نکالنا

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


from bs4 import BeautifulSoup

soup = BeautifulSoup(response.content, 'html.parser')

# Extracting common product details
product_url = soup.find('a', {'data-hook': 'product-link'}).get('href', '')
product_title = soup.find('a', {'data-hook': 'product-link'}).get_text(strip=True)
total_rating = soup.find('span', {'data-hook': 'rating-out-of-text'}).get_text(strip=True)

مرحلہ 4۔ بیوٹیف سوپ کا استعمال کرتے ہوئے جائزہ لینے کے اعداد و شمار کو نکالنا

شناخت شدہ ایکس پاتھ اظہار کی بنیاد پر جائزہ لینے والے کے نام ، درجہ بندی اور تبصرے نکالنے کے لئے ایچ ٹی ایم ایل کے مشمولات کی تجزیہ جاری رکھیں۔


reviews = []
review_elements = soup.find_all('div', {'data-hook': 'review'})
for review in review_elements:
    author_name = review.find('span', class_='a-profile-name').get_text(strip=True)
    rating_given = review.find('i', class_='review-rating').get_text(strip=True)
    comment = review.find('span', class_='review-text').get_text(strip=True)

    reviews.append({
        'Product URL': product_url,
        'Product Title': product_title,
        'Total Rating': total_rating,
        'Author': author_name,
        'Rating': rating_given,
        'Comment': comment,
    })

مرحلہ 5. ڈیٹا کو سی ایس وی میں محفوظ کرنا

مزید تجزیہ کے لئے نکالے گئے ڈیٹا کو CSV فائل میں محفوظ کرنے کے لئے ازگر کے بلٹ میں CSV ماڈیول کا استعمال کریں۔


import csv

# Define CSV file path
csv_file = 'amazon_reviews.csv'

# Define CSV fieldnames
fieldnames = ['Product URL', 'Product Title', 'Total Rating', 'Author', 'Rating', 'Comment']

# Writing data to CSV file
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    for review in reviews:
        writer.writerow(review)

print(f"Data saved to {csv_file}")

مکمل کوڈ

ایمیزون جائزہ لینے کے اعداد و شمار کو کھرچنے اور اسے CSV فائل میں محفوظ کرنے کے لئے مکمل کوڈ یہ ہے:


import requests
from bs4 import BeautifulSoup
import csv
import urllib3

urllib3.disable_warnings()

# URL of the Amazon product reviews page
url = "https://www.amazon.com/Portable-Mechanical-Keyboard-MageGee-Backlit/product-reviews/B098LG3N6R/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews"

# Proxy provided by the proxy service with IP-authorization
path_proxy = 'your_proxy_ip:your_proxy_port'
proxy = {
   'http': f'http://{path_proxy}',
   'https': f'https://{path_proxy}'
}

# Headers for the HTTP request
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',
}

# Send HTTP GET request to the URL with headers and handle exceptions
try:
   response = requests.get(url, headers=headers, timeout=10, proxies=proxy, verify=False)
   response.raise_for_status()  # Raise an exception for bad response status
except requests.exceptions.RequestException as e:
   print(f"Error: {e}")

# Parse the HTML content using BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')

# Extracting common product details
product_url = soup.find('a', {'data-hook': 'product-link'}).get('href', '')  # Extract product URL
product_title = soup.find('a', {'data-hook': 'product-link'}).get_text(strip=True)  # Extract product title
total_rating = soup.find('span', {'data-hook': 'rating-out-of-text'}).get_text(strip=True)  # Extract total rating

# Extracting individual reviews
reviews = []
review_elements = soup.find_all('div', {'data-hook': 'review'})
for review in review_elements:
   author_name = review.find('span', class_='a-profile-name').get_text(strip=True)  # Extract author name
   rating_given = review.find('i', class_='review-rating').get_text(strip=True)  # Extract rating given
   comment = review.find('span', class_='review-text').get_text(strip=True)  # Extract review comment

   # Store each review in a dictionary
   reviews.append({
       'Product URL': product_url,
       'Product Title': product_title,
       'Total Rating': total_rating,
       'Author': author_name,
       'Rating': rating_given,
       'Comment': comment,
   })

# Define CSV file path
csv_file = 'amazon_reviews.csv'

# Define CSV fieldnames
fieldnames = ['Product URL', 'Product Title', 'Total Rating', 'Author', 'Rating', 'Comment']

# Writing data to CSV file
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
   writer = csv.DictWriter(file, fieldnames=fieldnames)
   writer.writeheader()
   for review in reviews:
       writer.writerow(review)

# Print confirmation message
print(f"Data saved to {csv_file}")

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

تبصرے:

0 تبصرے