TripAdvisor adalah portal perjalanan yang banyak digunakan di mana pengguna menulis ulasan untuk akomodasi, tempat makan, tamasya, dll. Memperkaya data dengan ulasan TripAdvisor dapat membantu untuk Analisis Perjalanan, Studi Pesaing, dll. Dalam panduan ini, kita akan membahas bagaimana data TripAdvisor dapat diekstrak menggunakan python dan data disimpan dalam format CSV.
Untuk membuat scraper ini, kita akan menggunakan pustaka Python berikut ini:
Instal pustaka yang diperlukan menggunakan pip:
pip install requests lxml
Saat mengikis data dari situs web seperti TripAdvisor, sangat penting untuk mengonfigurasi tajuk permintaan dengan benar, terutama Agen Pengguna. Dengan mengatur tajuk ini, Anda dapat menyamarkan permintaan sebagai permintaan yang berasal dari pengguna yang sah, sehingga meminimalkan risiko aktivitas penggalian yang memicu pemblokiran karena pola lalu lintas yang tidak biasa. Selain itu, menggunakan server proxy sangat penting untuk menghindari pembatasan yang terkait dengan jumlah permintaan yang diizinkan dari satu alamat IP, sehingga memfasilitasi upaya pengumpulan data yang lebih luas.
Kita akan membahas proses penggalian daftar halaman hotel, mengekstrak detailnya, dan menyimpannya ke dalam file CSV. Mari kita uraikan setiap bagiannya.
Untuk memulai, impor pustaka yang diperlukan:
import requests
from lxml.html import fromstring
import csv
Kemudian, tentukan daftar URL untuk halaman hotel yang ingin Anda kikis datanya:
urls_list = [
'Https link',
'Https link'
]
Untuk memastikan bahwa permintaan Anda meniru permintaan dari peramban asli, sangat penting untuk mengonfigurasi header dengan benar. Langkah ini membantu menerobos sistem proteksi anti-bot di situs web dan meminimalkan risiko diblokir.
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',
}
Proksi dapat membantu menerobos pembatasan berbasis IP. Pada contoh di bawah ini, kami menggunakan proxy dengan autentikasi alamat IP. Berikut ini cara menambahkan proxy ke permintaan.
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
response = requests.get(url, headers=headers, proxies=proxies)
Untuk setiap URL, kirimkan permintaan dan parsing respons HTML:
extracted_data = []
for url in urls_list:
response = requests.get(url, headers=headers) # Tambahkan proxy = proxy jika diperlukan
parser = fromstring(response.text)
Dengan menggunakan XPath, kita dapat menargetkan elemen tertentu pada halaman:
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')
Simpan informasi yang diekstrak dalam kamus dan tambahkan ke daftar:
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)
Setelah melakukan scraping, simpan data ke dalam file 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')
Panduan ini tidak hanya memberikan dasar teknis untuk penggalian data, namun juga membuka jalan untuk analisis komprehensif di sektor pariwisata. Metode dan teknik yang dijelaskan di sini memberdayakan pengguna untuk menggali lebih dalam tren pasar dan perilaku konsumen. Wawasan tersebut sangat penting untuk mengembangkan strategi manajemen reputasi yang kuat dan melakukan analisis kompetitif. Dengan memanfaatkan panduan ini, pengguna dapat meningkatkan pemahaman mereka tentang dinamika dalam industri pariwisata, sehingga memungkinkan untuk membuat keputusan strategis yang tepat yang mendorong kesuksesan.
Komentar: 0