पायथन के साथ अमेज़ॅन समीक्षाओं को स्क्रैप करना, प्रतियोगी विश्लेषण करते समय, समीक्षाओं की जाँच और बाजार अनुसंधान करते समय उपयोगी है। यह दर्शाता है कि अमेज़ॅन पर उत्पाद की समीक्षा को कैसे कुशलता से पायथन, ब्यूटीफुल, और पुस्तकालयों का अनुरोध किया जाए।
स्क्रैपिंग प्रक्रिया में गोता लगाने से पहले, सुनिश्चित करें कि आपके पास आवश्यक पायथन लाइब्रेरी स्थापित हैं:
pip install requests
pip install beautifulsoup4
हम अमेज़ॅन पेज से उत्पाद समीक्षा निकालने पर ध्यान केंद्रित करेंगे और स्क्रैपिंग प्रक्रिया के प्रत्येक चरण की जांच करेंगे।
हम उन तत्वों की पहचान करने के लिए अमेज़ॅन उत्पाद समीक्षा पृष्ठ की HTML संरचना का निरीक्षण करें, जिन्हें हम खुरचना चाहते हैं: समीक्षक नाम, रेटिंग और टिप्पणियां।
उत्पाद शीर्षक और URL :
कुल रेटिंग:
समीक्षा अनुभाग:
लेखक का नाम:
रेटिंग:
टिप्पणी:
Amazon उत्पाद समीक्षा पृष्ठ पर HTTP GET अनुरोध भेजने के लिए अनुरोध लाइब्रेरी का उपयोग करें। वैध ब्राउज़र व्यवहार की नकल करने के लिए हेडर सेट करें और पता लगाने से बचें। अमेज़ॅन द्वारा अवरुद्ध होने से बचने के लिए प्रॉक्सी और पूर्ण अनुरोध हेडर आवश्यक हैं।
Proxies का उपयोग करने से IP पते और अमेज़ॅन से दर सीमाओं से बचने के लिए IP पते को घुमाने में मदद मिलती है। गुमनामी बनाए रखने और पता लगाने को रोकने के लिए बड़े पैमाने पर स्क्रैपिंग के लिए यह महत्वपूर्ण है। यहाँ, प्रॉक्सी विवरण प्रॉक्सी सेवा द्वारा प्रदान किए जाते हैं।
विभिन्न हेडर जैसे कि स्वीकार-एन्कोडिंग, स्वीकार-भाषा, संदर्भ, कनेक्शन, और अपग्रेड-असुरक्षित-अनुरोधों की नकल एक वैध ब्राउज़र अनुरोध की नकल करता है, जिससे बॉट के रूप में ध्वजांकित होने की संभावना कम हो जाती है।
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"
# प्रॉक्सी सेवा द्वारा प्रदान की गई प्रॉक्सी का उदाहरण
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',
}
# हेडर और प्रॉक्सी के साथ URL को HTTP प्राप्त करें
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}")
URL, शीर्षक और कुल रेटिंग जैसे सामान्य उत्पाद विवरण निकालने के लिए Beautifulsoup का उपयोग करके प्रतिक्रिया की HTML सामग्री को पार्स करें।
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# सामान्य उत्पाद विवरण निकालना
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)
पहचाने गए XPath अभिव्यक्तियों के आधार पर समीक्षक नाम, रेटिंग और टिप्पणियों को निकालने के लिए HTML सामग्री को पार्स करना जारी रखें।
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,
})
आगे के विश्लेषण के लिए एक CSV फ़ाइल में निकाले गए डेटा को सहेजने के लिए पायथन के अंतर्निहित CSV मॉड्यूल का उपयोग करें।
import csv
# CSV फ़ाइल पथ को परिभाषित करें
csv_file = 'amazon_reviews.csv'
# CSV फील्डनाम को परिभाषित करें
fieldnames = ['Product URL', 'Product Title', 'Total Rating', 'Author', 'Rating', 'Comment']
# CSV फ़ाइल में डेटा लिखना
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
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"
# आईपी-प्राधिकरण के साथ प्रॉक्सी सेवा द्वारा प्रदान की गई प्रॉक्सी
path_proxy = 'your_proxy_ip:your_proxy_port'
proxy = {
'http': f'http://{path_proxy}',
'https': f'https://{path_proxy}'
}
# HTTP अनुरोध के लिए हेडर
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',
}
# HTTP को हेडर के साथ URL को अनुरोध भेजें और अपवादों को संभालें
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}")
# BeautifulSoup का उपयोग करके HTML सामग्री को पार्स करें
soup = BeautifulSoup(response.content, 'html.parser')
# सामान्य उत्पाद विवरण निकालना
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
# व्यक्तिगत समीक्षाओं को निकालना
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
# प्रत्येक समीक्षा को एक शब्दकोश में स्टोर करें
reviews.append({
'Product URL': product_url,
'Product Title': product_title,
'Total Rating': total_rating,
'Author': author_name,
'Rating': rating_given,
'Comment': comment,
})
# CSV फ़ाइल पथ को परिभाषित करें
csv_file = 'amazon_reviews.csv'
# CSV फील्डनाम को परिभाषित करें
fieldnames = ['Product URL', 'Product Title', 'Total Rating', 'Author', 'Rating', 'Comment']
# CSV फ़ाइल में डेटा लिखना
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}")
अंत में, यह जोर देना महत्वपूर्ण है कि विश्वसनीय प्रॉक्सी सर्वर का चयन वेब स्क्रैपिंग के लिए स्क्रिप्ट राइटिंग में एक महत्वपूर्ण कदम है। यह एंटी-बॉट फिल्टर के खिलाफ रुकावटों और सुरक्षा को प्रभावी दरकिनार सुनिश्चित करता है। स्क्रैपिंग के लिए सबसे उपयुक्त विकल्प आवासीय प्रॉक्सी सर्वर हैं, जो एक उच्च ट्रस्ट कारक और गतिशील आईपी पते प्रदान करते हैं, साथ ही स्थिर आईएसपी प्रॉक्सिज़ जो उच्च गति और परिचालन स्थिरता प्रदान करते हैं।
टिप्पणियाँ: 0