• 05-08-2025, 11:15:48
    #1
    Merhaba,

    Booking.com üzerinden belirli bir bölgeye ait müşteri yorumlarını scrape etmem gereken bir projem var.
    Amacım; bu yorumları yapılandırılmış bir formatta (tercihen CSV) toplamak. Veride yer almasını istediğim bazı temel bilgiler şunlar:
    • Yorum yapan kişinin adı ve soyadı
    • Milliyeti
    • Konaklama süresi (toplam gün)
    • Puan
    • Yorum tarihi
    • Yorum metni
    • Lokasyon (otel veya şehir bilgisi)
    Yorumlar 10’dan fazla farklı dilde olabilir, bu nedenle eğer yorum başka bir dilde yazılmışsa İngilizce’ye otomatik çeviri yapılmasını da istiyorum.

    Eğer bu projede bana destek olabileceğinizi düşünüyorsanız, lütfen whatssaptan yazınız;
    Buraya Tıklayın
  • 05-08-2025, 11:27:13
    #2
    booking.com bot korumalı bir site olduğundan Selenium veya Playwright gibi tarayıcı otomasyonları kullanmak daha güvenlidir.

    booking.com scraping işlemlerinde sınırları zorlamadan, sleep() ile bekleyerek ve sayfa sayısını aşırı yükseltmeden ilerle. Aksi takdirde geçici ban yiyebilirsin.

    Gerekli paketleri aşağıdaki gibi kurman gerekiyor.

    pip install selenium pandas googletrans==4.0.0-rc1 undetected-chromedriver

    Aşağıdaki uygulama başlangıç aşamasında yardımcı olacaktır, kendi isteklerine göre daha da geliştirebilirsin.

    Uygulama;

    import time
    import pandas as pd
    from googletrans import Translator
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import undetected_chromedriver as uc
    
    # Tarayıcı ve çevirmen başlat
    options = uc.ChromeOptions()
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    driver = uc.Chrome(options=options)
    translator = Translator()
    
    # Yorum verilerini çek
    def scrape_reviews(booking_url, max_pages=3):
        all_reviews = []
        driver.get(booking_url)
        time.sleep(5)  # Sayfanın yüklenmesini bekle
    
        for page in range(max_pages):
            print(f"--- Sayfa {page+1} ---")
            time.sleep(2)
    
            reviews = driver.find_elements(By.CLASS_NAME, 'review_list_new_item_block')
    
            for r in reviews:
                try:
                    name = r.find_element(By.CLASS_NAME, 'bui-avatar-block__title').text.strip()
                    nationality = r.find_element(By.CLASS_NAME, 'bui-avatar-block__subtitle').text.strip()
                    score = r.find_element(By.CLASS_NAME, 'bui-review-score__badge').text.strip()
                    date = r.find_element(By.CLASS_NAME, 'c-review-block__date').text.strip()
    
                    try:
                        stay_info = r.find_element(By.CLASS_NAME, 'c-review-block__stay-date').text.strip()
                    except:
                        stay_info = ''
    
                    review_parts = r.find_elements(By.CLASS_NAME, 'c-review__body')
                    review_text = ' '.join([p.text.strip() for p in review_parts if p.text.strip()])
    
                    # Otomatik çeviri
                    detected = translator.detect(review_text).lang
                    if detected != "en":
                        review_en = translator.translate(review_text, dest='en').text
                    else:
                        review_en = review_text
    
                    all_reviews.append({
                        'Name': name,
                        'Nationality': nationality,
                        'Score': score,
                        'Date': date,
                        'Stay Info': stay_info,
                        'Review Original': review_text,
                        'Review (EN)': review_en
                    })
    
                except Exception as e:
                    print(f"Yorum parse hatası: {e}")
                    continue
    
            # Sonraki sayfaya geç
            try:
                next_btn = driver.find_element(By.CSS_SELECTOR, 'a.pagenext')
                driver.execute_script("arguments[0].click();", next_btn)
            except:
                print("Daha fazla sayfa yok.")
                break
    
        return all_reviews

    Çalıştırmak için;

    if __name__ == "__main__":
        # Örnek Booking yorum sayfası (bir otelin yorum sekmesiyle biten URL)
        url = "https://www.booking.com/hotel/fr/example.tr.html#tab-reviews"  # Gerçek URL ile değiştir
        yorumlar = scrape_reviews(url, max_pages=5)
        df = pd.DataFrame(yorumlar)
        df.to_csv("booking_yorumlar.csv", index=False, encoding='utf-8-sig')
        print("Yorumlar başarıyla CSV'ye kaydedildi.")
        driver.quit()
  • 05-08-2025, 13:10:45
    #3
    orhunturker adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Booking.com üzerinden belirli bir bölgeye ait müşteri yorumlarını scrape etmem gereken bir projem var.
    Amacım; bu yorumları yapılandırılmış bir formatta (tercihen CSV) toplamak. Veride yer almasını istediğim bazı temel bilgiler şunlar:
    • Yorum yapan kişinin adı ve soyadı
    • Milliyeti
    • Konaklama süresi (toplam gün)
    • Puan
    • Yorum tarihi
    • Yorum metni
    • Lokasyon (otel veya şehir bilgisi)
    Yorumlar 10’dan fazla farklı dilde olabilir, bu nedenle eğer yorum başka bir dilde yazılmışsa İngilizce’ye otomatik çeviri yapılmasını da istiyorum.

    Eğer bu projede bana destek olabileceğinizi düşünüyorsanız, lütfen whatssaptan yazınız;
    Buraya Tıklayın
    Whatsapp'tan mesaj iletilmiştir.
  • 05-08-2025, 13:16:44
    #4
    Whatsapptan iletişime geçilmiştir
  • 05-08-2025, 14:38:53
    #5
    Whatsapptan iletişime geçildi
  • 05-08-2025, 22:12:41
    #6
    Merhaba,
    Booking.com yorumlarını istediğiniz şekilde toplamak için özel web scraping ve veri işleme çözümleri geliştirebiliriz. Projenizde aşağıdaki özellikleri sağlayacak şekilde:
    • Yorum yapan kişinin adı ve soyadı, milliyeti, konaklama süresi, puan, yorum tarihi, yorum metni, lokasyon (otel/şehir) gibi tüm temel verilerin çıkarılması
    • 10’dan fazla farklı dildeki yorumların otomatik olarak İngilizce’ye çevrilmesi
    • Yapılandırılmış, kolay kullanılabilir CSV formatında veri çıktısı
    • Veri gizliliği ve etik kurallara uygun çalışma
    Bu tür projeler için deneyimli yazılım ekibimizle hızlı ve güvenilir çözümler sunuyoruz.
    Detayları görüşmek için:
    📞 Tel & WhatsApp: 0552 947 79 90
    📧 Mail: info@goksoymedya.com.tr
    Göksoy Medya olarak, veri toplama ve otomasyon projelerinizde yanınızdayız.
    Saygılarımızla,
    Göksoy Medya