hi
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia
Polski Python के साथ Amazon समीक्षाओं को स्क्रैप करना उपयोगी हो सकता है — चाहे आप प्रतिस्पर्धियों का विश्लेषण कर रहे हों, यह जांच रहे हों कि वास्तविक ग्राहक क्या कह रहे हैं, या बाज़ार के रुझानों में गहराई से जा रहे हों। यदि आप यह जानना चाहते हैं कि Python का उपयोग करके Amazon समीक्षाओं को कैसे स्क्रैप किया जाए, तो यह छोटा ट्यूटोरियल आपको एक व्यावहारिक प्रक्रिया के माध्यम से मार्गदर्शन करेगा, जो Requests पैकेज और BeautifulSoup का उपयोग करके प्रोग्राम के रूप में समीक्षा सामग्री प्राप्त करता है।
सबसे पहले, आपको कुछ लाइब्रेरी स्थापित करनी होंगी। दो मुख्य निर्भरताएँ — नेटवर्क कॉल के लिए Requests और HTML ट्री ट्रैवर्सल के लिए BeautifulSoup — दोनों को एक ही टर्मिनल लाइन में स्थापित किया जा सकता है:
pip install requests
pip install beautifulsoup4
हम Python के साथ Amazon समीक्षाओं पर ध्यान केंद्रित करेंगे और स्क्रैपिंग प्रक्रिया के प्रत्येक चरण की बारीकी से चरण-दर-चरण जाँच करेंगे।
समीक्षा तत्वों की पहचान करने के लिए साइट की HTML संरचना को समझना आवश्यक है। समीक्षा अनुभाग में रिव्युअर हैंडल, स्टार रेटिंग और लिखित टिप्पणी जैसे फ़ील्ड शामिल होते हैं; इन्हें ब्राउज़र के निरीक्षण उपकरणों के माध्यम से खोजना चाहिए।
उत्पाद शीर्षक और URL:
कुल रेटिंग:
समीक्षा अनुभाग:
लेखक का नाम:
रेटिंग:
टिप्पणी:
हेडर्स महत्वपूर्ण भूमिका निभाते हैं। User-Agent स्ट्रिंग्स और अन्य हेडर एक नियमित ब्राउज़र की नकल करने के लिए सेट किए जाते हैं ताकि डिटेक्शन की संभावना कम हो। यदि आप इसे सही तरीके से करना चाहते हैं, तो किसी Amazon scraping guide python का पालन करना आपको बताएगा कि इन हेडर्स को कैसे सेट करना है और साथ ही proxies कैसे कॉन्फ़िगर करने हैं ताकि आपके अनुरोध सुचारू और रडार के नीचे रहें।
Proxies IP रोटेशन की अनुमति देते हैं जिससे बैन और रेट-लिमिट के जोखिम कम होते हैं। बड़े पैमाने पर स्क्रैपिंग के लिए ये विशेष रूप से महत्वपूर्ण हैं।
Accept-Encoding, Accept-Language, Referer, Connection और Upgrade-Insecure-Requests जैसे विभिन्न हेडर्स को शामिल करने से यह एक वैध ब्राउज़र अनुरोध जैसा प्रतीत होता है, जिससे बॉट के रूप में पहचाने जाने की संभावना घट जाती है।
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 error if the request failed
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
पृष्ठ लोड होने के बाद, BeautifulSoup कच्चे HTML को एक खोज योग्य ट्री में बदल देता है। उस संरचना से, स्क्रैपर कैनोनिकल उत्पाद लिंक, पेज शीर्षक और कोई भी दृश्यमान रेटिंग सारांश प्राप्त करता है।
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)
हम उसी HTML संरचना पर वापस जाते हैं, इस बार समीक्षक के नाम, स्टार रेटिंग और लिखित टिप्पणियाँ एकत्र करने पर ध्यान केंद्रित करते हैं — यह सब Python का उपयोग करके पूर्वनिर्धारित चयनकर्ताओं के साथ Amazon समीक्षाओं को कुशलतापूर्वक स्क्रैप करने के लिए किया जाता है।
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,
})
Python का बिल्ट-इन csv.writer एकत्रित समीक्षा डेटा को बाद में विश्लेषण के लिए .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}")
एक कोड ब्लॉक प्रस्तुत किया गया है जो अनुरोध निर्माण, पार्सिंग और फ़ाइल आउटपुट चरणों को एक साथ जोड़ता है, जिससे संपूर्ण स्क्रैपिंग वर्कफ़्लो एक ही रन करने योग्य स्क्रिप्ट में समाहित हो जाता है:
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 error if the request failed
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
# Use BeautifulSoup to parse the HTML and grab the data you need
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}")
विश्वसनीय proxies ब्लॉक्स को बायपास करने की सम्भावनाओं को बढ़ाते हैं और anti-bot फिल्टरों द्वारा पहचान को कम करने में मदद करते हैं। scraping के लिए, residential proxies अक्सर उनकी trust factor के कारण प्राथमिकता दी जाती है, जबकि static ISP proxies गति और स्थिरता प्रदान करते हैं।
Python का उपयोग करके Amazon उत्पाद समीक्षाओं को स्क्रैप करना पूरी तरह संभव है, और इसे करने के लिए Python आवश्यक उपकरण प्रदान करता है। केवल कुछ लाइब्रेरी और पृष्ठ की सावधानीपूर्वक जाँच के साथ, आप उपयोगी जानकारी प्राप्त कर सकते हैं: कि ग्राहक वास्तव में क्या सोचते हैं और कहाँ आपके प्रतिस्पर्धी त्रुटियाँ कर रहे हैं।
बेशक, कुछ चुनौतियाँ हैं: Amazon स्क्रैपरों को खास तौर पर पसंद नहीं करता। इसलिए यदि आप Python स्टाइल में बड़े पैमाने पर Amazon उत्पाद समीक्षाएँ स्क्रैप करने का प्रयास कर रहे हैं, तो रडार के नीचे रहने के लिए आपको proxies की आवश्यकता होगी। सबसे भरोसेमंद विकल्प residential proxies (great trust score, rotating IPs) या static ISP proxies (fast and stable) हैं।
टिप्पणियाँ: 0