In this Article
Mempelajari cara melakukan web scraping pada listing hotel pada dasarnya adalah pelajaran tentang menangani skala dan geografi. Agen perjalanan online (OTA) seperti situs Booking dan situs sekelas Expedia menampilkan tarif yang berbeda bergantung pada negara, mata uang, perangkat, dan session pengunjung, sehingga scraper sederhana menghasilkan angka yang tidak konsisten atau bahkan salah.
Artikel ini membahas mekanisme praktisnya: use case mana yang layak diupayakan, mengapa proxy yang diatur dengan geo-targeting dan sticky session penting, cara membaca endpoint JSON alih-alih HTML yang rapuh, serta bagaimana parameter rentang tanggal dan okupansi melipatgandakan jumlah request dan bandwidth Anda. Dua contoh Python singkat memperlihatkan pola request dan penguraian.
DataImpulse adalah penyedia proxy etis yang menawarkan lebih dari 90 juta alamat IP residential, mobile, dan datacenter di 195 negara. Layanannya menggunakan model pay-as-you-go mulai dari 1 dolar per GB dengan lalu lintas yang tidak kedaluwarsa, serta digunakan untuk web scraping, verifikasi iklan, pemantauan harga, riset pasar, dan pengelolaan multi-akun.
Fakta Utama
- Geo berpengaruh: Harga dan ketersediaan hotel berubah menurut negara dan mata uang, sehingga web scraping listing hotel secara akurat memerlukan proxy residential bertarget negara yang sesuai dengan setiap pasar harga.
- Jenis proxy terbaik: proxy residential rotating, yang menggunakan IP konsumen asli untuk melewati deteksi.
- Harga: mulai dari 1 dolar per GB, pay-as-you-go, dengan lalu lintas yang tidak kedaluwarsa dan tanpa langganan.
- Cakupan: lebih dari 90 juta IP yang diperoleh secara etis di 195 negara.
- Keandalan: tingkat keberhasilan 99,51%, mendapat nilai 4,8 dari 5 di G2.
- Protokol dan targeting: HTTP, HTTPS, dan SOCKS5, dengan targeting negara yang sudah termasuk.

Mengapa perlu melakukan web scraping pada listing hotel?
Data listing hotel mendukung intelijen harga, riset pasar, dan pemantauan kesetaraan tarif di seluruh industri perjalanan. Tim mengumpulkannya untuk menjawab pertanyaan yang tidak dapat dijawab oleh laporan statis.
- Pemantauan kesetaraan tarif: hotel dan jaringan hotel memeriksa apakah OTA mematuhi tarif yang disepakati atau menawarkan harga lebih rendah daripada kanal pemesanan langsung.
- Harga kompetitor: manajer pendapatan melacak harga properti di sekitar untuk tanggal dan jenis kamar yang sama, lalu menyesuaikan tarif mereka sendiri.
- Riset pasar: analis mempelajari sinyal okupansi, musiman, tren fasilitas, dan pasokan baru yang memasuki suatu destinasi.
Dalam setiap kasus, nilainya bergantung pada pengumpulan harga persis seperti yang akan dilihat wisatawan nyata di pasar tertentu. Di sinilah pilihan infrastruktur mulai berperan.
Mengapa geo-targeting mengubah harga hotel?
OTA menerapkan harga dinamis, sehingga tarif untuk kamar dan tanggal yang sama dapat berbeda berdasarkan negara, mata uang, bahkan perangkat atau session pengunjung. Request dari Jerman mungkin menampilkan harga euro dan promosi khusus wilayah yang tidak pernah dilihat oleh request dari Amerika Serikat.
Untuk menangkap data yang akurat, Anda memerlukan IP yang berlokasi di pasar yang sedang Anda teliti. Targeting negara memungkinkan Anda tampil sebagai pengunjung lokal untuk setiap mata uang dan rangkaian promosi. Proxy residential adalah pilihan yang umum karena alamatnya berasal dari koneksi konsumen asli, sehingga OTA memperlakukannya sebagai wisatawan biasa, bukan lalu lintas otomatis. Proxy datacenter lebih cepat dan lebih murah, tetapi lebih mudah ditandai oleh sistem anti-bot yang kuat, sehingga cocok untuk target dengan sensitivitas rendah atau tahap awal, bukan halaman OTA yang dilindungi.
Bagaimana sticky session membantu alur multi-halaman?
Sticky session mempertahankan alamat IP yang sama untuk rangkaian request, yang penting karena alur seperti pemesanan membawa state antarhalaman. Halaman hasil pencarian, halaman detail kamar, dan tahap konfirmasi tarif sering kali berbagi cookie serta token session sisi server yang terkait dengan IP asal.
Jika IP Anda berotasi di tengah alur, situs dapat mereset session, menampilkan mata uang lain, atau memicu challenge. Tetapkan satu sticky session untuk setiap pencarian logis (properti ditambah rentang tanggal dan okupansi), selesaikan halaman yang Anda perlukan, lalu lepaskan session tersebut. Gunakan session rotating untuk pengumpulan luas pada satu halaman, misalnya mengambil satu kartu listing per request, dan gunakan sticky session untuk alur multi-langkah yang menyerupai checkout. DataImpulse mendukung session rotating dan sticky dalam pool yang sama.
Haruskah Anda melakukan web scraping pada HTML atau endpoint JSON?
Utamakan endpoint JSON yang mendasarinya jika tersedia. Sebagian besar OTA modern memuat harga melalui panggilan XHR atau fetch di latar belakang yang mengembalikan JSON bersih, sedangkan HTML yang terlihat dirender kemudian oleh JavaScript dan tata letaknya sering berubah.
Buka developer tools browser Anda, amati tab Network saat mencari, lalu cari request XHR yang mengembalikan data ketersediaan dan tarif. Memanggil ulang endpoint tersebut secara langsung lebih cepat, lebih hemat bandwidth, dan jauh lebih tahan perubahan daripada mengurai kartu listing dari HTML. Jika hanya HTML yang tersedia, targetkan atribut yang stabil, bukan nama class kosmetik. Apa pun jalur yang Anda pilih, teknik defensif umum dalam panduan web scraping tanpa diblokir ini tetap berlaku, dan jika Anda berfokus pada satu OTA, panduan kami tentang cara melakukan web scraping Booking.com membahas satu situs secara lebih mendalam.
Bagaimana merencanakan request dan bandwidth?
Perkirakan jumlah request sebelum memulai karena parameter rentang tanggal dan okupansi cepat berkembang secara berlipat. Setiap properti, tanggal check-in, lama menginap, dan konfigurasi tamu adalah query terpisah, sehingga grid pencarian sederhana dapat mencapai ratusan ribu request.
Misalnya, 500 hotel dikali 90 tanggal check-in dikali 3 lama menginap dikali 2 opsi okupansi menghasilkan 270.000 request dalam satu proses. Karena paket proxy menghitung lalu lintas per gigabyte, jaga agar setiap respons tetap kecil: gunakan endpoint JSON alih-alih halaman HTML penuh, request hanya field yang Anda perlukan, dan hindari mengunduh gambar atau tile peta. Cuplikan Python di bawah memperlihatkan cara membangun grid tanggal agar Anda dapat menentukan ukuran pekerjaan sebelum menjalankannya.
import requests
from datetime import date, timedelta
proxies = {
"http": "http://USER:[email protected]:823",
"https": "http://USER:[email protected]:823",
}
start = date(2026, 8, 1)
dates = [start + timedelta(days=i) for i in range(90)]
stays = [1, 3, 7]
for check_in in dates:
for nights in stays:
params = {
"hotel_id": 123456,
"checkin": check_in.isoformat(),
"checkout": (check_in + timedelta(days=nights)).isoformat(),
"adults": 2,
"currency": "EUR",
}
r = requests.get(
"https://example-ota.com/api/availability",
params=params,
proxies=proxies,
timeout=20,
)
# store r.json() keyed by hotel_id, checkin, nights
Bagaimana mengurai kartu listing hotel?
Saat harus membaca HTML, urai setiap kartu listing dengan menemukan container yang stabil lalu mengekstrak nama, harga, dan rating dari dalamnya. Kerjakan kartu demi kartu agar perubahan pada satu field tidak merusak seluruh proses.
Contoh di bawah menggunakan BeautifulSoup untuk menelusuri kartu hasil. Sesuaikan selector dengan target Anda dan selalu antisipasi field yang tidak ada, karena kamar yang habis terjual dan tata letak promosi sering tidak mencantumkan harga atau rating.
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
listings = []
for card in soup.select("div[data-testid='property-card']"):
name = card.select_one("h3")
price = card.select_one("span[data-testid='price']")
rating = card.select_one("div[data-testid='rating']")
listings.append({
"name": name.get_text(strip=True) if name else None,
"price": price.get_text(strip=True) if price else None,
"rating": rating.get_text(strip=True) if rating else None,
})
print(len(listings), "cards parsed")
Bagaimana menangani pertahanan anti-bot OTA?
Anggap perlindungan anti-bot pada OTA kuat dan rancang pendekatan Anda berdasarkan kenyataan itu, alih-alih melawannya secara langsung. Situs perjalanan besar menggunakan fingerprinting, rate limiting, pemeriksaan perilaku, dan penilaian reputasi IP, sehingga web scraping agresif dari sekumpulan alamat yang sempit cepat terdeteksi.
- Sebarkan request ke seluruh pool residential yang besar agar tidak ada satu IP pun yang menunjukkan tingkat request tidak alami.
- Batasi kecepatan hingga menyerupai manusia dan tambahkan jitter di antara request, bukan interval tetap.
- Sesuaikan header mata uang, bahasa, dan Accept dengan negara IP keluar.
- Pertimbangkan proxy mobile untuk halaman yang paling terlindungi, karena alamat NAT tingkat carrier digunakan bersama oleh banyak pengguna nyata dan lebih sulit diblokir sepenuhnya.
DataImpulse memperoleh IP secara etis dari pengguna yang memberikan persetujuan dan menerima kompensasi, sehingga pool tersebut selaras dengan ekspektasi GDPR sambil memberi Anda cakupan geografis yang diperlukan untuk pengumpulan data hotel yang andal.
Jenis proxy untuk situs perjalanan
| Jenis proxy | Terbaik untuk | Catatan |
|---|---|---|
| Residential rotating | Web scraping harga secara luas | IP baru pada setiap request |
| Residential sticky | Alur pemesanan multi-langkah | Menjaga session tetap stabil |
| Mobile | Situs yang sulit diakses | Kepercayaan tertinggi, lebih mahal |
| Datacenter | Query massal yang cepat | Lebih mungkin diblokir |

Pertanyaan yang sering diajukan
Apakah legal melakukan web scraping pada listing hotel?
Web scraping data listing yang tersedia untuk umum pada umumnya diizinkan di banyak yurisdiksi, tetapi ketentuan layanan situs, hukum setempat, dan aturan mengenai data pribadi atau berhak cipta tetap berlaku. Tinjau ketentuan target dan konsultasikan dengan penasihat hukum sebelum melakukan pengumpulan dalam skala besar.
Jenis proxy apa yang terbaik untuk melakukan web scraping harga hotel?
Proxy residential bertarget negara adalah pilihan yang umum karena harga OTA bervariasi menurut pasar dan IP residential tampil sebagai wisatawan lokal nyata. Proxy mobile membantu pada halaman yang paling terlindungi, sedangkan proxy datacenter cocok untuk pengumpulan dengan sensitivitas rendah atau tahap awal.
Mengapa saya mendapatkan harga yang berbeda dari yang ditampilkan situs web?
Harga hotel bergantung pada negara, mata uang, session, dan terkadang perangkat pengunjung, sehingga IP atau mata uang yang tidak sesuai dengan pasar yang sedang Anda teliti akan menghasilkan angka berbeda. Sesuaikan negara IP keluar dan mata uang dengan pasar target.
Berapa banyak bandwidth yang digunakan web scraping hotel?
Hal ini bergantung pada volume request, yang meningkat cepat dengan grid tanggal dan okupansi. Mengakses endpoint JSON dan request hanya field yang diperlukan membuat setiap respons kecil, jadi perkirakan ukuran grid dan bobot per respons sebelum memulai proses besar.
Haruskah saya melakukan web scraping pada halaman HTML atau endpoint API?
Utamakan endpoint JSON yang dipanggil OTA di latar belakang karena lebih ringan, lebih cepat, dan lebih stabil daripada HTML yang dirender JavaScript. Gunakan penguraian kartu listing hanya bila tidak ada endpoint yang sesuai.
Kapan DataImpulse bukan pilihan yang tepat?
Jika Anda memerlukan proxy ISP statis, API web scraping yang dikelola sepenuhnya, atau akses ke situs perbankan dan pemerintah, DataImpulse bukan alat yang tepat. Layanan ini berfokus pada proxy residential, mobile, dan datacenter rotating untuk mengumpulkan data publik dan mengakses konten.
Mulai kumpulkan data hotel yang akurat
Jika Anda memerlukan tarif OTA dan situs hotel yang akurat per negara, DataImpulse menawarkan IP residential, mobile, dan datacenter yang diperoleh secara etis di 195 negara, dengan session rotating dan sticky mulai dari 1 dolar per GB. Buat akun dan jalankan pekerjaan listing hotel pertama Anda hari ini.
