scrape hotel listings

Otel ilanlarının nasıl kazınacağını öğrenmek, büyük ölçüde ölçeği ve coğrafyayı yönetme meselesidir. Booking gibi çevrimiçi seyahat acenteleri (OTA) ve Expedia sınıfı siteler, ziyaretçinin ülkesine, para birimine, cihazına ve oturumuna göre farklı fiyatlar gösterir; bu nedenle basit bir scraper tutarsız veya düpedüz yanlış sayılar döndürür.

Bu makale, pratik işleyişi ele alır: hangi kullanım alanlarının bu çabayı haklı çıkardığını, coğrafi hedeflemeli proxy’lerin ve sticky session’ların neden önemli olduğunu, kırılgan HTML yerine JSON endpoint’lerinin nasıl okunacağını ve tarih aralığı ile doluluk parametrelerinin istek sayınızı ve bant genişliğinizi nasıl katladığını. İki kısa Python örneği, istek ve ayrıştırma kalıplarını gösterir.

DataImpulse, 195 ülkede 90 milyondan fazla residential, mobile ve datacenter IP adresi sunan etik bir proxy sağlayıcısıdır. GB başına 1 dolardan başlayan, süresi dolmayan trafiğe sahip kullandıkça öde modelini kullanır; web scraping, reklam doğrulama, fiyat izleme, pazar araştırması ve çoklu hesap yönetimi için kullanılır.

Temel Bilgiler

  • Coğrafya önemlidir: Otel fiyatları ve uygunluk ülkeye ve para birimine göre değişir; bu yüzden otel ilanlarını doğru biçimde kazımak, her fiyatlandırma pazarına uyan ülke hedeflemeli residential proxy’ler gerektirir.
  • En iyi proxy türü: bot tespitini aşan gerçek tüketici IP’lerini kullanan dönen residential proxy’ler.
  • Fiyat: GB başına 1 dolardan başlayan, süresi dolmayan trafik ve abonelik gerektirmeyen kullandıkça öde modeli.
  • Kapsama: 195 ülkede etik biçimde tedarik edilmiş 90M’den fazla IP.
  • Güvenilirlik: %99,51 başarı oranı, G2’de 5 üzerinden 4,8 puan.
  • Protokoller ve hedefleme: Ülke hedefleme dahil HTTP, HTTPS ve SOCKS5.
OTA'larda otel fiyatlarının takibi

Otel ilanları neden kazınır?

Otel ilanı verileri, seyahat sektöründe fiyatlandırma istihbaratını, pazar araştırmasını ve fiyat eşitliği izlemeyi destekler. Ekipler, statik raporların yanıtlayamayacağı soruları yanıtlamak için bu verileri toplar.

  • Fiyat eşitliği izleme: Oteller ve zincirler, OTA’ların üzerinde anlaşılan fiyatlara uyup uymadığını veya doğrudan rezervasyon kanalından daha düşük fiyat verip vermediğini kontrol eder.
  • Rakip fiyatlandırması: Gelir yöneticileri, yakındaki tesislerin aynı tarihleri ve oda türlerini nasıl fiyatlandırdığını izler, ardından kendi fiyatlarını ayarlar.
  • Pazar araştırması: Analistler doluluk sinyallerini, mevsimselliği, olanak eğilimlerini ve bir destinasyona giren yeni arzı inceler.

Her durumda değer, fiyatları belirli bir pazardaki gerçek bir yolcunun göreceği biçimde tam olarak toplamaya bağlıdır; altyapı tercihleri bu noktada önem kazanmaya başlar.

Coğrafi hedefleme otel fiyatlarını neden değiştirir?

OTA’lar dinamik fiyatlandırma uygular; bu nedenle aynı oda ve tarih için fiyat, ziyaretçinin ülkesine, para birimine, hatta cihazına veya oturumuna göre değişebilir. Almanya’dan yapılan bir istek, ABD’den yapılan bir isteğin hiç görmediği euro fiyatlarını ve bölgeye özel promosyonları gösterebilir.

Doğru verileri yakalamak için incelediğiniz pazarda bulunan bir IP’ye ihtiyacınız vardır. Ülke hedefleme, her para birimi ve promosyon kümesi için yerel bir ziyaretçi gibi görünmenizi sağlar. Residential proxy’ler burada yaygın tercihtir; çünkü adresleri gerçek tüketici bağlantılarına aittir, dolayısıyla OTA’lar bunları otomatik trafik yerine sıradan yolcular olarak değerlendirir. Datacenter proxy’ler daha hızlı ve ucuzdur, ancak güçlü anti-bot sistemlerinin bunları işaretlemesi daha kolaydır; bu yüzden korumalı OTA sayfaları yerine düşük hassasiyetli hedefler veya ilk geçiş için uygundurlar.

Sticky session’lar çok sayfalı akışlara nasıl yardımcı olur?

Sticky session’lar, bir dizi istek boyunca aynı IP adresini korur. Bu önemlidir, çünkü rezervasyon tarzı akışlar sayfalar arasında durum taşır. Arama sonuçları sayfası, oda ayrıntıları sayfası ve fiyat onay adımı genellikle kaynak IP’ye bağlı çerezleri ve sunucu tarafındaki oturum token’larını paylaşır.

Akışın ortasında IP’niz değişirse site oturumu sıfırlayabilir, farklı bir para birimi gösterebilir veya bir doğrulama tetikleyebilir. Her mantıksal arama için, yani bir tesis, tarih aralığı ve doluluk bileşimi için bir sticky session atayın; ihtiyacınız olan sayfaları tamamlayın, sonra serbest bırakın. İstek başına bir ilan kartı çekmek gibi geniş kapsamlı, tek sayfalı toplama için dönen oturumları kullanın; sticky session’ları ise ödeme adımına benzer çok aşamalı yollar için ayırın. DataImpulse, aynı havuzda hem dönen hem de sticky session’ları destekler.

HTML mi yoksa JSON endpoint’leri mi kazınmalı?

Mevcut olduklarında alttaki JSON endpoint’lerini tercih edin. Modern OTA’ların çoğu, fiyatları temiz JSON döndüren arka plan XHR veya fetch çağrılarıyla yükler; görünür HTML ise daha sonra JavaScript ile oluşturulur ve düzeni sık sık değişir.

Tarayıcı geliştirici araçlarınızı açın, arama yaparken Ağ sekmesini izleyin ve uygunluk ile fiyat verisi döndüren XHR isteklerini arayın. Bu endpoint’leri doğrudan tekrar çalıştırmak daha hızlıdır, bant genişliğini daha az kullanır ve HTML’den ilan kartlarını ayrıştırmaktan çok daha az kırılgandır. Yalnızca HTML mevcutsa, görsel class adları yerine kararlı öznitelikleri hedefleyin. Hangi yolu seçerseniz seçin, engellenmeden web sitesi kazımaya ilişkin bu rehberdeki genel savunmacı teknikler hâlâ geçerlidir; tek bir OTA’ya odaklanıyorsanız Booking.com’un nasıl kazınacağına dair açıklamamız tek bir siteyi daha derinlemesine ele alır.

İstekleri ve bant genişliğini nasıl planlarsınız?

Başlamadan önce istek sayınızı tahmin edin; çünkü tarih aralığı ve doluluk parametreleri hızla çarpılır. Her tesis, giriş tarihi, konaklama süresi ve misafir yapılandırması ayrı bir sorgudur; bu nedenle mütevazı bir arama ızgarası yüz binlerce isteğe ulaşabilir.

Örneğin, 500 otel çarpı 90 giriş tarihi çarpı 3 konaklama süresi çarpı 2 doluluk seçeneği, tek geçişte 270.000 istektir. Proxy planları trafiği gigabayt üzerinden ölçtüğünden, her yanıtı küçük tutun: tam HTML sayfaları yerine JSON endpoint’lerine istek atın, yalnızca ihtiyacınız olan alanları isteyin ve görselleri veya harita parçalarını indirmekten kaçının. Aşağıdaki Python kod parçası, işi çalıştırmadan önce boyutlandırabilmeniz için tarih ızgarasının nasıl oluşturulduğunu gösterir.

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

Otel ilanı kartları nasıl ayrıştırılır?

HTML okumanız gerektiğinde, kararlı bir kapsayıcı bularak her ilan kartını ayrıştırın ve içinden adı, fiyatı ve puanı çıkarın. Bir alandaki değişikliğin tüm çalışmayı bozmaması için kart kart ilerleyin.

Aşağıdaki örnek, sonuç kartları üzerinde ilerlemek için BeautifulSoup kullanır. Seçicileri hedefinize uyarlayın ve eksik alanlara karşı her zaman koruma ekleyin; çünkü tükenmiş odalar ve promosyon düzenleri çoğu zaman bir fiyatı veya puanı içermez.

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")

OTA anti-bot savunmalarıyla nasıl başa çıkılır?

OTA’lardaki anti-bot korumasının güçlü olduğunu varsayın ve onunla doğrudan mücadele etmek yerine tasarımınızı buna göre yapın. Büyük seyahat siteleri fingerprinting, oran sınırlama, davranışsal kontroller ve IP itibarı puanlaması kullanır; bu nedenle dar bir adres kümesinden agresif kazıma hızla tespit edilir.

  • Hiçbir tekil IP doğal olmayan bir istek oranı göstermesin diye istekleri geniş bir residential havuza yayın.
  • Sabit aralık yerine istekler arasında insan benzeri bir hızda ilerleyin ve değişken gecikmeler ekleyin.
  • Para birimini, dili ve Accept headers’ını çıkış IP’sinin ülkesiyle eşleştirin.
  • En güçlü şekilde korunan sayfalar için mobile proxy’leri değerlendirin; taşıyıcı sınıfı NAT adresleri birçok gerçek kullanıcı tarafından paylaşılır ve bunların tamamen engellenmesi daha zordur.

DataImpulse, IP’lerini katılım izni veren ve ücretlendirilen kullanıcılardan etik biçimde tedarik eder; bu, havuzu GDPR beklentileriyle uyumlu tutarken güvenilir otel verisi toplamanın gerektirdiği coğrafi yayılımı size sağlar.

Seyahat siteleri için proxy türleri

Proxy türü En uygun kullanım Not
Dönen residential Geniş kapsamlı fiyat kazıma Her istekte yeni IP
Sticky residential Çok aşamalı rezervasyon akışları Oturumu kararlı tutar
Mobile Erişilmesi zor siteler En yüksek güven, daha pahalı
Datacenter Hızlı toplu sorgular Engellenme olasılığı daha yüksek
Otel verisi toplama için hangi proxy'ler uygundur

Sık sorulan sorular

Otel ilanlarını kazımak yasal mı?

Herkese açık ilan verilerini kazımaya birçok yargı alanında genel olarak izin verilir; ancak bir sitenin hizmet şartları, yerel hukuk ve kişisel ya da telifli verilere ilişkin kurallar yine de geçerlidir. Büyük ölçekte veri toplamadan önce hedefin şartlarını inceleyin ve hukuk danışmanına başvurun.

Otel fiyatlarını kazımak için hangi proxy türü en iyisidir?

Ülke hedeflemeli residential proxy’ler yaygın tercihtir; çünkü OTA fiyatları pazara göre değişir ve residential IP’ler gerçek yerel yolcular gibi görünür. Mobile proxy’ler en güçlü korumalı sayfalarda yardımcı olur, datacenter proxy’ler ise düşük hassasiyetli veya ilk geçişteki toplama için uygundur.

Neden web sitesinin gösterdiğinden farklı fiyatlar alıyorum?

Otel fiyatları ziyaretçinin ülkesine, para birimine, oturumuna ve bazen cihazına bağlıdır; bu nedenle incelediğiniz pazara uymayan bir IP veya para birimi farklı sayılar döndürür. Çıkış IP’sinin ülkesini ve para birimini hedef pazarla eşleştirin.

Otel kazıma ne kadar bant genişliği kullanır?

Bu, tarih ve doluluk ızgaralarıyla hızla büyüyen istek hacmine bağlıdır. JSON endpoint’lerine istek atmak ve yalnızca gerekli alanları istemek her yanıtı küçük tutar; bu yüzden büyük bir çalışmaya başlamadan önce ızgara boyutunuzu ve yanıt başına ağırlığı tahmin edin.

HTML sayfasını mı yoksa API endpoint’ini mi kazımalıyım?

OTA’ların arka planda çağırdığı JSON endpoint’lerini tercih edin; bunlar JavaScript ile oluşturulan HTML’den daha hafif, hızlı ve kararlıdır. Yalnızca uygun bir endpoint görünür olmadığında ilan kartlarını ayrıştırmaya başvurun.

DataImpulse ne zaman doğru tercih değildir?

Statik ISP proxy’lerine, tamamen yönetilen bir scraping API’ye veya bankacılık ve devlet sitelerine erişime ihtiyacınız varsa DataImpulse doğru araç değildir. Bu araç, herkese açık veri toplamak ve içeriğe erişmek için dönen residential, mobile ve datacenter proxy’lere odaklanır.

Doğru otel verilerini toplamaya başlayın

OTA’lardan ve otel sitelerinden ülkeye uygun fiyatlara ihtiyacınız varsa DataImpulse, 195 ülkede GB başına 1 dolardan başlayan dönen ve sticky session’larla etik biçimde tedarik edilmiş residential, mobile ve datacenter IP’ler sunar. Bir hesap oluşturun ve ilk otel ilanı işinizi bugün çalıştırın.


Share article: