TripAdvisor एक व्यापक रूप से इस्तेमाल किया जाने वाला ट्रैवल पोर्टल है जहां उपयोगकर्ता आवास, भोजन, दर्शनीय स्थलों की यात्रा आदि के लिए समीक्षा लिखते हैं। TripAdvisor समीक्षाओं के साथ डेटा को समृद्ध करना यात्रा विश्लेषण, प्रतियोगी अध्ययन आदि के लिए सहायक हो सकता है। इस गाइड में, हम यह कवर करेंगे कि TripAdvisor डेटा को पायथन और CSV प्रारूप में संग्रहीत डेटा का उपयोग करके कैसे निकाला जा सकता है।
इस खुरचनी को बनाने के लिए, हम निम्नलिखित अजगर पुस्तकालयों का उपयोग करेंगे:
pip का उपयोग करके आवश्यक पुस्तकालयों को स्थापित करें:
pip install requests lxml
TripAdvisor जैसी वेबसाइटों से डेटा को स्क्रैप करते समय, अनुरोध हेडर, विशेष रूप से उपयोगकर्ता-एजेंट को ठीक से कॉन्फ़िगर करना महत्वपूर्ण है। इस हेडर को सेट करके, आप अपने अनुरोधों को वैध उपयोगकर्ताओं से आने वाले लोगों के रूप में भंग कर सकते हैं, जो असामान्य ट्रैफ़िक पैटर्न के कारण ब्लॉक को ट्रिगर करने वाली आपकी स्क्रैपिंग गतिविधियों के जोखिम को कम करता है। इसके अतिरिक्त, प्रॉक्सी सर्वर को नियोजित करना एकल आईपी पते से अनुमेय अनुरोधों की संख्या से संबंधित प्रतिबंधों को दरकिनार करने के लिए आवश्यक है, इस प्रकार अधिक व्यापक डेटा संग्रह प्रयासों की सुविधा प्रदान करता है।
हम होटल पृष्ठों की एक सूची को स्क्रैप करने, विवरण निकालने और उन्हें CSV फ़ाइल में बचाने की प्रक्रिया से गुजरेंगे। प्रत्येक भाग को तोड़ते हैं।
शुरू करने के लिए, आवश्यक पुस्तकालयों को आयात करें:
import requests
from lxml.html import fromstring
import csv
फिर, होटल के पृष्ठों के लिए URL की एक सूची को परिभाषित करें, जिससे आप डेटा को स्क्रैप करने की योजना बनाते हैं:
urls_list = [
'Https link',
'Https link'
]
यह सुनिश्चित करने के लिए कि आपके अनुरोध एक वास्तविक ब्राउज़र से उन लोगों की नकल करते हैं, यह हेडर को ठीक से कॉन्फ़िगर करना महत्वपूर्ण है। यह कदम वेबसाइटों पर एंटी-बॉट सुरक्षा प्रणालियों को बायपास करने में मदद करता है और अवरुद्ध होने के जोखिम को कम करता है।
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',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
'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',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
}
प्रॉक्सी आईपी-आधारित प्रतिबंधों को बायपास करने में मदद कर सकता है। नीचे दिए गए उदाहरण में, हम आईपी पते प्रमाणीकरण के साथ एक प्रॉक्सी का उपयोग करते हैं। यहां अनुरोध करने के लिए एक प्रॉक्सी जोड़ने का तरीका बताया गया है।
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
response = requests.get(url, headers=headers, proxies=proxies)
प्रत्येक URL के लिए, एक अनुरोध भेजें और प्रतिक्रिया HTML को पार्स करें:
extracted_data = []
for url in urls_list:
response = requests.get(url, headers=headers) # यदि आवश्यक हो तो proxies = proxies जोड़ें
parser = fromstring(response.text)
XPath का उपयोग करते हुए, हम पृष्ठ पर विशिष्ट तत्वों को लक्षित कर सकते हैं:
title = parser.xpath('//h1[@data-automation="mainH1"]/text()')[0]
about = parser.xpath('//div[@class="_T FKffI bmUTE"]/div/div/text()')[0].strip()
images_url = parser.xpath('//div[@data-testid="media_window_test"]/div/div/button/picture/source/@srcset')
price = parser.xpath('//div[@data-automation="commerce_module_visible_price"]/text()')[0]
ratings = parser.xpath('//div[@class="jVDab W f u w GOdjs"]/@aria-label')[0].split(' ')[0]
features = parser.xpath('//div[@class="f Q2 _Y tyUdl"]/div[2]/span/span/span/text()')
reviews = parser.xpath('//span[@class="JguWG"]/span//text()')
listing_by = parser.xpath('//div[@class="biGQs _P pZUbB KxBGd"]/text()')[0]
similar_experiences = parser.xpath('//div[@data-automation="shelfCard"]/a/@href')
निकाले गए जानकारी को एक शब्दकोश में संग्रहीत करें और इसे एक सूची में जोड़ें:
data = {
'title': title,
'about': about,
'price': price,
'listing by': listing_by,
'ratings': ratings,
'image_urls': images_url,
'features': features,
'reviews': reviews,
'similar_experiences': similar_experiences
}
extracted_data.append(data)
स्क्रैपिंग के बाद, डेटा को CSV फ़ाइल में सहेजें:
csv_columns = ['title', 'about', 'price', 'listing by', 'ratings', 'image_urls', 'features', 'reviews', 'similar_experiences']
with open("tripadvisor_data.csv", 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in extracted_data:
writer.writerow(data)
import requests
from lxml.html import fromstring
import csv
urls_list = [
'Https link',
'Https link'
]
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',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
'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',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
}
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
extracted_data = []
for url in urls_list:
response = requests.get(url, headers=headers, proxies=proxies)
parser = fromstring(response.text)
title = parser.xpath('//h1[@data-automation="mainH1"]/text()')[0]
about = parser.xpath('//div[@class="_T FKffI bmUTE"]/div/div/text()')[0].strip()
images_url = parser.xpath('//div[@data-testid="media_window_test"]/div/div/button/picture/source/@srcset')
price = parser.xpath('//div[@data-automation="commerce_module_visible_price"]/text()')[0]
ratings = parser.xpath('//div[@class="jVDab W f u w GOdjs"]/@aria-label')[0].split(' ')[0]
features = parser.xpath('//div[@class="f Q2 _Y tyUdl"]/div[2]/span/span/span/text()')
reviews = parser.xpath('//span[@class="JguWG"]/span//text()')
listing_by = parser.xpath('//div[@class="biGQs _P pZUbB KxBGd"]/text()')[0]
similar_experiences = parser.xpath('//div[@data-automation="shelfCard"]/a/@href')
data = {
'title': title,
'about': about,
'price': price,
'listing by': listing_by,
'ratings': ratings,
'image_urls': images_url,
'features': features,
'reviews': reviews,
'similar_experiences': similar_experiences
}
extracted_data.append(data)
csv_columns = ['title', 'about', 'price', 'listing by', 'ratings', 'image_urls', 'features', 'reviews', 'similar_experiences']
with open("tripadvisor_data.csv", 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in extracted_data:
writer.writerow(data)
print('saved into tripadvisor_data.csv')
यह गाइड न केवल डेटा स्क्रैपिंग के लिए एक तकनीकी नींव देता है, बल्कि पर्यटन क्षेत्र में व्यापक विश्लेषण के लिए रास्ते भी खोलता है। यहां विस्तृत तरीके और तकनीक उपयोगकर्ताओं को बाजार के रुझानों और उपभोक्ता व्यवहारों में गहराई तक पहुंचाने के लिए सशक्त बनाती हैं। इस तरह की अंतर्दृष्टि मजबूत प्रतिष्ठा प्रबंधन रणनीतियों को विकसित करने और प्रतिस्पर्धी विश्लेषण करने के लिए महत्वपूर्ण हैं। इस गाइड का लाभ उठाकर, उपयोगकर्ता पर्यटन उद्योग के भीतर गतिशीलता की अपनी समझ को बढ़ा सकते हैं, जिससे सूचित, रणनीतिक निर्णयों को तैयार करना संभव हो जाता है जो सफलता को बढ़ाते हैं।
टिप्पणियाँ: 0