TripAdvisor ist ein weit verbreitetes Reiseportal, auf dem Nutzer Bewertungen für Unterkünfte, Restaurants, Sehenswürdigkeiten usw. abgeben. Die Anreicherung der Daten mit TripAdvisor-Bewertungen kann für Reiseanalysen, Wettbewerbsstudien usw. hilfreich sein. In diesem Leitfaden wird beschrieben, wie TripAdvisor-Daten mit Python extrahiert und im csv-Format gespeichert werden können.
Um diesen Scraper zu erstellen, werden wir die folgenden Python-Bibliotheken verwenden:
Installieren Sie die erforderlichen Bibliotheken mit pip:
pip install requests lxml
Beim Scraping von Daten von Websites wie TripAdvisor ist es wichtig, die Request-Header richtig zu konfigurieren, insbesondere den User-Agent. Durch die Einstellung dieses Headers können Sie Ihre Anfragen als die von legitimen Nutzern stammenden Anfragen tarnen, wodurch das Risiko minimiert wird, dass Ihre Scraping-Aktivitäten aufgrund ungewöhnlicher Verkehrsmuster Sperren auslösen. Darüber hinaus ist der Einsatz von Proxy-Servern unerlässlich, um Beschränkungen in Bezug auf die Anzahl der zulässigen Anfragen von einer einzigen IP-Adresse zu umgehen und so eine umfangreichere Datenerfassung zu ermöglichen.
Wir gehen den Prozess des Scrapens einer Liste von Hotelseiten durch, extrahieren Details und speichern sie in einer CSV-Datei. Lassen Sie uns jeden Teil aufschlüsseln.
Importieren Sie zunächst die erforderlichen Bibliotheken:
import requests
from lxml.html import fromstring
import csv
Definieren Sie dann eine Liste von URLs für die Hotelseiten, von denen Sie Daten abrufen möchten:
urls_list = [
'Https link',
'Https link'
]
Um sicherzustellen, dass Ihre Anfragen die eines echten Browsers imitieren, ist es wichtig, die Kopfzeilen richtig zu konfigurieren. Dieser Schritt hilft dabei, Anti-Bot-Schutzsysteme auf Websites zu umgehen und das Risiko, blockiert zu werden, zu minimieren.
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',
}
Proxys können helfen, IP-basierte Beschränkungen zu umgehen. Im folgenden Beispiel verwenden wir einen Proxy mit IP-Adressauthentifizierung. So fügen Sie einen Proxy zu Anfragen hinzu.
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
response = requests.get(url, headers=headers, proxies=proxies)
Senden Sie für jede URL eine Anfrage und analysieren Sie die HTML-Antwort:
extracted_data = []
for url in urls_list:
response = requests.get(url, headers=headers) # Proxies=proxies hinzufügen, falls erforderlich
parser = fromstring(response.text)
Mit XPath können wir bestimmte Elemente auf der Seite anvisieren:
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')
Speichern Sie die extrahierten Informationen in einem Wörterbuch und hängen Sie sie an eine Liste an:
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)
Nach dem Scraping speichern Sie die Daten in einer CSV-Datei:
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')
Dieser Leitfaden schafft nicht nur eine technische Grundlage für Data Scraping, sondern eröffnet auch Möglichkeiten für umfassende Analysen im Tourismussektor. Die hier beschriebenen Methoden und Techniken ermöglichen es den Nutzern, Markttrends und Verbraucherverhalten tiefer zu erforschen. Solche Einblicke sind für die Entwicklung robuster Reputationsmanagementstrategien und die Durchführung von Wettbewerbsanalysen von entscheidender Bedeutung. Mit Hilfe dieses Leitfadens können die Nutzer ihr Verständnis für die Dynamik in der Tourismusbranche verbessern und so fundierte, strategische Entscheidungen treffen, die zum Erfolg führen.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0