Agoda listet Millionen von Hotels und Kurzaufenthaltsobjekten in Asien und dem Rest der Welt auf, und jedes Suchergebnis enthält genau die strukturierten Daten, die Preisverfolgung, Reiserecherche und Wettbewerbsanalyse antreiben: den Hotelnamen, den Nachtpreis, die Gastbewertung, den Standort und einen Link zur vollständigen Listung. Für jeden, der einen Markt beobachtet oder ein Reisevergleichstool aufbaut, sind diese öffentlichen Listungsdaten das Rohmaterial, und sie manuell über eine Ergebnisseite hinweg zu sammeln ist langsam und schnell veraltet.

Dieser Leitfaden zeigt Ihnen, wie Sie Hoteldaten von Agoda mit Python auf zuverlässige Weise scrapen. Sie bauen einen kleinen, ausführbaren Scraper, der eine gerenderte Agoda-Suchseite über die Crawling API abruft, Agodas scrollbasiertes Laden verarbeitet, damit der vollständige Ergebnissatz erscheint, die gewünschten Felder mit BeautifulSoup parst und saubere Datensätze als JSON speichert. Die gesamte Anleitung bleibt auf öffentliche Listungsdaten beschränkt. Den Abschnitt zur Rechtslage am Ende lohnt es sich zu lesen, bevor Sie dies in größerem Umfang einsetzen.

Was Sie bauen werden

Ein Python-Skript, das eine öffentliche Agoda-Such-URL für eine Stadt entgegennimmt, die gerenderte Ergebnisseite über die Crawling API abruft, sie scrollt, damit jede Unterkunftskarte lädt, und einen strukturierten Datensatz pro Hotel extrahiert. Das laufende Beispiel sind Hotels in Kuala Lumpur. Wir ziehen diese Felder:

  • Hotelname der Name der Unterkunft, wie er auf der Karte angezeigt wird.
  • Preis der für die ausgewählten Daten angezeigte Nachtpreis.
  • Bewertung die Gastbewertung, die Qualität und Beliebtheit signalisiert.
  • Standort die Stadt oder das Gebiet, für das die Suche durchgeführt wurde.
  • Link die vollständige URL der Hotellisting-Seite.

Warum eine einfache Anfrage bei Agoda scheitert

Wenn Sie eine Agoda-Such-URL mit einem einfachen HTTP-Client anfordern, erhalten Sie eine Antwort mit Status 200 und fast keine Listungen im Body. Zwei Dinge arbeiten gegen Sie. Erstens baut Agoda seine Suchergebnisse im Browser durch JavaScript auf und lädt weitere Unterkunftskarten nur beim Scrollen, sodass das anfängliche HTML eine dünne Hülle ist, die sich erst füllt, nachdem die Skripte der Seite ausgeführt wurden und der Benutzer nach unten scrollt. Parsen Sie diese erste Antwort und Sie erfassen nur wenige Karten statt der vollständigen Seite. Zweitens kennzeichnet Agoda automatisierten Traffic schnell: Rechenzentrum-IPs und Anfragemuster, die nicht wie ein echter Browser aussehen, werden gedrosselt, IP-gesperrt oder herausgefordert, bevor sie jemals den gerenderten Inhalt erreichen.

Ein funktionierender Agoda-Scraper benötigt also drei Dinge in einer Anfrage: einen Browser, der die Seite rendert, eine Möglichkeit, das Scrollen auszulösen, damit die lazy-geladenen Karten erscheinen, und eine IP, die die Plattform als echten Besucher liest. Sie können das selbst mit einem Headless-Browser, einer Scroll-Routine und einem Pool rotierender privater Proxys zusammenstellen, aber diesen Stack am Laufen zu halten ist der Großteil der Arbeit. Die Crawling API faltet all das in einen einzigen Aufruf: Sie senden die URL mit einem JavaScript-Token und Scroll-Optionen, sie rendert und scrollt die Seite hinter einer vertrauenswürdigen IP und gibt fertiges HTML zum Parsen zurück.

Warum das JS-Token

Crawlbase bietet zwei Token-Typen. Das normale Token ruft statisches HTML ab; das JavaScript (JS)-Token rendert die Seite zuerst in einem echten Browser. Agoda füllt seine Suchergebnisse clientseitig und lädt sie beim Scrollen, daher benötigen Sie hier das JS-Token. Das normale Token gibt dieselbe dünne Hülle zurück, die ein einfacher Abruf ergeben würde, und es gibt wenig Nützliches daraus zu parsen.

Voraussetzungen

Sie benötigen einige Dinge, bevor Sie Code schreiben. Keines davon nimmt viel Zeit in Anspruch.

Grundlegendes Python. Sie sollten in der Lage sein, ein Python-Skript zu schreiben und auszuführen und Pakete mit pip zu installieren. Wenn Sie neu auf der Parse-Seite sind, ist der BeautifulSoup-Leitfaden ein guter Begleiter zu diesem Tutorial.

Python 3.8 oder höher. Bestätigen Sie Ihre Version mit python --version. Wenn Sie es nicht haben, installieren Sie es von python.org oder über eine Distribution wie Anaconda, und stellen Sie sicher, dass Python in Ihrem PATH ist.

Ein Crawlbase-Konto und JS-Token. Registrieren Sie sich, öffnen Sie Ihr Dashboard und kopieren Sie Ihr JavaScript (JS)-Token von der Kontodokumentationsseite. Crawlbase umfasst bis zu 20.000 kostenlose Anfragen zum Starten, was für die Durchführung dieser Anleitung ausreichend ist. Behandeln Sie das Token wie ein Passwort: Es authentifiziert Ihre Anfragen, halten Sie es also aus der Versionskontrolle heraus.

Das Projekt einrichten

Erstellen Sie eine virtuelle Umgebung, damit Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die Bibliotheken, die der Scraper benötigt.

bash
python --version

python -m venv agoda_env
source agoda_env/bin/activate

pip install crawlbase beautifulsoup4

Unter Windows aktivieren Sie die Umgebung mit agoda_env\Scripts\activate anstelle der source-Zeile. Zwei Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Client für die Crawling API, und beautifulsoup4 parst das zurückgegebene HTML, damit Sie einzelne Felder per CSS-Selektor herausziehen können. Das json-Modul wird mit der Standardbibliothek geliefert, sodass für den Exportschritt nichts weiteres zu installieren ist.

Schritt 1: Eine gerenderte Agoda-Seite abrufen

Beginnen Sie damit, eine fertige Seite zu erhalten. Importieren Sie die CrawlingAPI-Klasse, initialisieren Sie sie mit Ihrem JS-Token und fordern Sie eine Agoda-Such-URL an. Agoda lädt Karten beim Scrollen, also übergeben Sie die Optionen scroll und scroll_interval, damit die API die Seite scrollt, bevor sie erfasst wird. Das Prüfen des Crawlbase-cb_status (legacy pc_status) vor dem Parsen hält Fehler laut statt still.

python
from crawlbase import CrawlingAPI

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

OPTIONS = {
    "scroll": "true",
    "scroll_interval": "20",
}

def fetch_agoda_page(page_url):
    response = api.get(page_url, OPTIONS)
    if response["headers"]["cb_status"] == "200":
        return response["body"].decode("utf-8")
    print(f"Request failed: {response['headers']['cb_status']}")
    return None

if __name__ == "__main__":
    search_url = "https://www.agoda.com/search?city=14524&adults=2&rooms=1"
    html = fetch_agoda_page(search_url)
    print(html[:500] if html else "No HTML returned")

Die zwei Scroll-Optionen sind wichtig für ein lazy-ladendes Ziel wie Agoda. scroll weist die API an, die Seite zu scrollen, anstatt sie sofort zu erfassen, und scroll_interval legt fest, wie viele Sekunden weitergescrolt werden soll, damit spät-rendernde Karten erscheinen, bevor die Seite erfasst wird. Zwanzig Sekunden ist das dokumentierte Maximum und ein vernünftiger Ausgangspunkt für eine belebte Ergebnisseite. Führen Sie das Skript mit python agoda_scraper.py aus und Sie sollten echtes Agoda-Such-Markup sehen, nicht die Hülle, die eine einfache Anfrage zurückgibt. Das bestätigt, dass Rendering und Scrollen funktionieren, bevor Sie einen einzigen Selektor schreiben.

Crawlbase Crawling API

Agoda benötigt eine gerenderte Seite, die gescrollt wurde, hinter einer vertrauenswürdigen IP in einem einzigen Aufruf, was genau das ist, was die Optionen scroll und scroll_interval oben einrichten. Die Crawling API nimmt ein JS-Token, führt die Seite in einem echten Browser aus, scrollt sie, um die lazy-geladenen Karten auszulösen, rotiert durch private IPs serverseitig und gibt Ihnen fertiges HTML, sodass Sie weder eine Headless-Flotte noch einen Proxy-Pool selbst betreiben müssen. Richten Sie es zuerst auf eine öffentliche Suchseite im kostenlosen Tarif.

Schritt 2: Die Seite inspizieren und die Hotelkarten parsen

Bevor Sie Selektoren schreiben, öffnen Sie die Agoda-Suchseite in Ihrem Browser, klicken Sie mit der rechten Maustaste auf eine Hotelkarte und wählen Sie Inspizieren, um ihre HTML-Struktur zu lesen. Auf der Kuala Lumpur-Ergebnisseite sitzt jede Listung in einer Unterkunftskarte mit einigen stabilen Hooks, die Sie anvisieren können:

  • Hotelname befindet sich in einem <h3> mit data-selenium="hotel-name".
  • Preis sitzt in einem <div> mit data-element-name="final-price".
  • Bewertung ist in einem <p> mit data-element-name="review-score".
  • Listungslink ist das href des a.PropertyCard__Link-Ankers.

Laden Sie das gerenderte HTML in BeautifulSoup, schleifen Sie über jede Unterkunftskarte und ziehen Sie diese vier Felder heraus. Jede Suche ist so gesichert, dass eine Karte, der ein Feld fehlt, einen leeren String zurückgibt, anstatt den Lauf zum Absturz zu bringen, und der relative Link wird mit Agodas Domain verbunden, um eine vollständige URL zu bilden.

python
from bs4 import BeautifulSoup

CARD_SELECTOR = "div#contentContainer ol.hotel-list-container > li.PropertyCard"

def text_of(card, selector):
    el = card.select_one(selector)
    return el.get_text(strip=True) if el else ""

def extract_agoda_data(html, location):
    soup = BeautifulSoup(html, "html.parser")
    hotels = []
    for card in soup.select(CARD_SELECTOR):
        link_el = card.select_one("a.PropertyCard__Link")
        href = link_el["href"] if link_el and link_el.get("href") else ""
        hotels.append({
            "name": text_of(card, 'h3[data-selenium="hotel-name"]'),
            "price": text_of(card, 'div[data-element-name="final-price"]'),
            "rating": text_of(card, 'p[data-element-name="review-score"]'),
            "location": location,
            "link": f"https://www.agoda.com{href}" if href else "",
        })
    return hotels

Der text_of-Helper fragt ein Element innerhalb einer Karte ab und gibt seinen bereinigten Text oder einen leeren String zurück, wenn das Element fehlt, sodass eine Listung, der ein Feld fehlt, die Schleife nicht unterbricht. Der Kartenselektor geht vom Inhaltscontainer der Seite bis zu jedem li.PropertyCard hinunter, und die vier Feldselektoren kommen direkt aus Agodas Markup. Führen Sie dies gegen das gescrollte HTML aus Schritt 1 aus und Sie erhalten einen Datensatz pro Hotel auf der Seite.

Selektoren verändern sich

Agodas data-selenium- und data-element-name-Hooks und seine generierten Klassennamen ändern sich ohne Vorankündigung. Behandeln Sie die hier genannten Selektoren als Ausgangspunkt, nicht als Vertrag. Wenn eine Liste leer zurückkommt, untersuchen Sie die Live-Seite in den Entwicklertools Ihres Browsers und aktualisieren Sie den Selektor. Regelmäßige Selektorwartung ist für jeden Produktions-Scraper normal, kein Zeichen dafür, dass etwas kaputt ist.

Schritt 3: Das vollständige Skript zusammenstellen

Verbinden Sie die Teile jetzt in einem ausführbaren Skript: Rufen Sie die gescrollte Suchseite ab, parsen Sie jede Hotelkarte und exportieren Sie die Datensätze in eine JSON-Datei.

python
import json
from crawlbase import CrawlingAPI
from bs4 import BeautifulSoup

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

OPTIONS = {
    "scroll": "true",
    "scroll_interval": "20",
}

CARD_SELECTOR = "div#contentContainer ol.hotel-list-container > li.PropertyCard"

def fetch_agoda_page(page_url):
    response = api.get(page_url, OPTIONS)
    if response["headers"]["cb_status"] == "200":
        return response["body"].decode("utf-8")
    print(f"Request failed: {response['headers']['cb_status']}")
    return None

def text_of(card, selector):
    el = card.select_one(selector)
    return el.get_text(strip=True) if el else ""

def extract_agoda_data(html, location):
    soup = BeautifulSoup(html, "html.parser")
    hotels = []
    for card in soup.select(CARD_SELECTOR):
        link_el = card.select_one("a.PropertyCard__Link")
        href = link_el["href"] if link_el and link_el.get("href") else ""
        hotels.append({
            "name": text_of(card, 'h3[data-selenium="hotel-name"]'),
            "price": text_of(card, 'div[data-element-name="final-price"]'),
            "rating": text_of(card, 'p[data-element-name="review-score"]'),
            "location": location,
            "link": f"https://www.agoda.com{href}" if href else "",
        })
    return hotels

def save_to_json(data, filename="agoda_hotels.json"):
    with open(filename, "w") as f:
        json.dump(data, f, indent=2)
    print(f"Saved {len(data)} hotels to {filename}")

def main():
    location = "Kuala Lumpur"
    search_url = "https://www.agoda.com/search?city=14524&adults=2&rooms=1"
    html = fetch_agoda_page(search_url)
    if html:
        hotels = extract_agoda_data(html, location)
        save_to_json(hotels)

if __name__ == "__main__":
    main()

Das Skript ruft die gescrollte Suchseite ab, parst jede Unterkunftskarte in einen Datensatz und schreibt die Liste in agoda_hotels.json mit zweistufiger Einrückung. Der Parameter city=14524 ist Agodas interne ID für Kuala Lumpur. Tauschen Sie ihn gegen eine andere Stadt-ID aus und fügen Sie Ihre eigenen Check-in-, Check-out- und Belegungsparameter hinzu, um den Scraper auf einen anderen Markt zu richten. Da das Standort-Label übergeben und nicht geparst wird, trägt jeder Datensatz die Stadt, nach der Sie gesucht haben.

Wie die Ausgabe aussieht

Führen Sie das vollständige Skript mit python agoda_scraper.py aus und Sie erhalten einen sauberen strukturierten Datensatz pro Hotel, bereit zur Analyse, für eine Datenbank oder eine Tabellenkalkulation. Die Preis- und Bewertungswerte kommen so durch, wie Agoda sie auf der Karte formatiert.

json
[
  {
    "name": "Summer Suites KLCC By Castle Classy",
    "price": "USD34",
    "rating": "8.4",
    "location": "Kuala Lumpur",
    "link": "https://www.agoda.com/summer-suites-klcc-by-castle-classy/hotel/kuala-lumpur-my.html"
  },
  {
    "name": "Riveria City Kuala Lumpur by Guestonic",
    "price": "USD20",
    "rating": "9.2",
    "location": "Kuala Lumpur",
    "link": "https://www.agoda.com/riveria-city-kuala-lumpur-by-guestonic/hotel/kuala-lumpur-my.html"
  }
]

Wenn Sie dieselben Daten in einer Tabellenkalkulation möchten, ersetzen Sie save_to_json durch Pythons csv.DictWriter unter Verwendung der Schlüssel des ersten Datensatzes als Header. Die Datensatzform bleibt dieselbe und lässt sich direkt in pandas für die Filterung nach Preisband oder Sortierung nach Bewertung einfügen.

Über Städte skalieren und nicht gesperrt bleiben

Die einzelne Suchseite oben ist der Baustein. Um mehr von einem Markt abzudecken, schleifen Sie über eine Liste von Agoda-Stadt-IDs und rufen Sie fetch_agoda_page für jede auf, und markieren Sie jeden Stapel mit seinem Standort. Agoda verwendet scrollbasiertes Laden statt nummerierter Seiten, sodass scroll_interval steuert, wie viel eines Ergebnissatzes Sie erfassen. Erhöhen Sie ihn in Richtung Maximum auf dichten Stadtseiten, wo Karten weiterhin laden.

Auch mit verwaltetem Rendering und Scrollen beobachtet Agoda scraper-artigen Traffic. Einige Gewohnheiten halten einen längeren Lauf gesund, und sie gelten für jedes schwierige kommerzielle Ziel.

  • Pacing der Anfragen. Viele Stadtseiten in einer engen Schleife abzurufen ist der schnellste Weg zur Drosselung oder Herausforderung. Fügen Sie eine kurze Pause zwischen Anfragen hinzu und variieren Sie Ihre Ziele, anstatt einen Pfad mit voller Geschwindigkeit zu crawlen.
  • Auf Rotation setzen. Ein Pool privater IPs verteilt Anfragen über viele echte Benutzeradressen, sodass keine einzelne ein Rate-Limit auslöst. Die Crawling API erledigt das für Sie. Wenn Sie Ihren eigenen Stack verwenden, ist das der Teil, den Sie richtig machen müssen.
  • Status-Codes lesen. Ein Lauf, der anfängt, Nicht-200-cb_status-Werte zurückzugeben, signalisiert Ihnen, dass die aktuelle Rate oder das IP-Tier nicht mehr ausreicht. Behandeln Sie das als Signal zum Zurückgehen, nicht als Rauschen, das ignoriert werden soll.

Für größere Crawls stellt der asynchrone Crawler Anfragen in die Warteschlange und liefert Ergebnisse an einen Webhook, was für das Ausführen vieler Stadtseiten ohne offene Verbindungen geeignet ist. Für das umfassendere Playbook lesen Sie wie man Websites scrapt, ohne gesperrt zu werden und den Leitfaden zum Crawlen von JavaScript-Websites. Wenn Sie Hoteldaten über Portale hinweg vergleichen möchten, überträgt sich derselbe Ansatz auf Expedia scrapen, Tripadvisor und Google Hotels.

Ob das Scrapen von Agoda erlaubt ist, hängt von Agodas Nutzungsbedingungen, Ihrer Gerichtsbarkeit und dem ab, was Sie mit den Daten tun. Agodas Bedingungen beschränken den automatisierten Zugriff und die Massenerfassung von Daten, sodass das Scrapen unabhängig von der Sorgfalt Ihres Toolings gegen diese Bedingungen verstoßen kann. Kein Code hier ändert das. Er lässt nur den technischen Teil funktionieren. Lesen Sie Agodas Nutzungsbedingungen und seine robots.txt, halten Sie Ihr Anfragevolumen moderat, damit Sie seine Server nicht belasten, und behandeln Sie beide Dokumente als Grenze für das, was Sie sammeln. Web-Scraping befindet sich in einer rechtlichen Grauzone, und die sicherste Haltung ist es, nur öffentlich Sichtbares zu sammeln und gut innerhalb angemessener Rate-Limits zu bleiben.

Einige Grundsätze, die es wert sind, eingehalten zu werden. Sammeln Sie nur öffentliche Listungsfelder: den Hotelnamen, den Nachtpreis, die Gastbewertung, den Standort und den Listungslink, den jeder ohne Konto sehen kann. Vermeiden Sie alles, was mit identifizierbaren Personen verbunden ist, einschließlich Gastnamen, die an Bewertungen angehängt sind, oder Kontaktdetails von Gastgebern oder Gästen, was persönliche Daten sind und außerhalb des öffentlichen Listungsumfangs liegen. Datenschutzgesetze wie DSGVO und CCPA gelten, sobald persönliche Daten ins Spiel kommen, halten Sie den Datensatz also bei sachlichen Unterkunftsinformationen. Redistribuieren Sie keine urheberrechtlich geschützten Agoda-Inhalte wie Fotos oder vollständige Bewertungstexte, und versuchen Sie nicht, irgendetwas hinter einem Login, einer gespeicherten Buchung oder einem Konto zu erreichen.

Dieser Leitfaden ist bewusst auf öffentliche Suchergebnisse beschränkt, denn das ist die Grenze, die die Arbeit vertretbar macht. Wenn Ihr Projekt mehr als das erfordert, oder Sie etwas Kommerzielles auf der Grundlage von Hoteldaten aufbauen, ist der richtige Weg eine Lizenzvereinbarung: Agoda betreibt ein offizielles Partner- und Affiliate-Programm mit einer sanktionierten API für erlaubte Anwendungsfälle, was der richtige Weg für Massen- oder Produktionsnutzung ist, kein ausgefeilterer Scraper.

Zusammenfassung

Wichtigste Erkenntnisse

  • Agoda wird clientseitig gerendert und scrollbasiert geladen. Eine einfache Anfrage gibt eine dünne Hülle mit nur wenigen Karten zurück, daher müssen Sie die Seite rendern und scrollen, bevor Sie sie parsen.
  • Sie benötigen Rendering, Scrollen und eine vertrauenswürdige IP zusammen. Die Crawling API mit einem JS-Token erledigt alle drei in einem Aufruf; scroll und scroll_interval steuern, wie viel des Ergebnissatzes geladen wird.
  • Agodas stabile Hooks anvisieren. Lesen Sie den Hotelnamen aus data-selenium="hotel-name", den Preis aus data-element-name="final-price", die Bewertung aus data-element-name="review-score" und den Link aus a.PropertyCard__Link.
  • Strukturierte Datensätze exportieren. Schleifen Sie die Unterkunftskarten in Name, Preis, Bewertung, Standort und Link und schreiben Sie sie dann als JSON (oder CSV) zur Analyse.
  • Bleiben Sie bei öffentlichen Daten. Respektieren Sie Agodas ToS und robots.txt, halten Sie persönliche Daten und urheberrechtlich geschützte Medien aus dem Datensatz heraus, und verwenden Sie Agodas offizielle Partner-API für kommerzielle oder Massennutzung.

Häufig gestellte Fragen

Warum gibt eine einfache Anfrage nur wenige Agoda-Hotels zurück?

Weil Agoda seine Suchergebnisse clientseitig mit JavaScript aufbaut und weitere Unterkunftskarten nur beim Scrollen lädt. Das anfängliche HTML ist eine Hülle, die sich füllt, nachdem die Skripte der Seite ausgeführt wurden und die Seite scrollt, sodass eine rohe HTTP-Anfrage Status 200 zurückgibt, wobei die meisten Karten fehlen. Um die vollständige Seite zu erhalten, müssen Sie sie zuerst rendern und scrollen, was das JS-Token der Crawling API und die scroll-Optionen für Sie erledigen.

Benötige ich das normale Token oder das JS-Token für Agoda?

Das JS-Token. Das normale Token ruft statisches HTML ab, das bei Agoda dieselbe dünne Hülle ist, die ein einfacher Abruf zurückgibt. Das JS-Token rendert die Seite in einem echten Browser und, mit den scroll-Optionen gesetzt, scrollt es, bevor es das HTML zurückgibt, sodass die Unterkunftskarten vorhanden sind, wenn BeautifulSoup sie parst.

Welche Daten kann ich von einer Agoda-Listung scrapen?

Öffentliche Listungsfelder: den Hotelnamen, den Nachtpreis, die Gastbewertung, den Standort und den Listungslink. Bleiben Sie bei Daten, die für jeden Besucher ohne Konto sichtbar sind, und vermeiden Sie Gastnamen, die an Bewertungen angehängt sind, oder Kontaktdetails von Gastgebern oder Gästen, was persönliche Daten sind und außerhalb des öffentlichen Listungsumfangs liegen, den dieser Leitfaden abdeckt.

Wie scrapt man Hotels für eine andere Stadt?

Agoda identifiziert jede Stadt mit einem numerischen city-Parameter in der Such-URL (zum Beispiel city=14524 für Kuala Lumpur). Finden Sie die ID, indem Sie die Suche in Ihrem Browser durchführen und sie aus der URL lesen, und tauschen Sie sie dann in search_url zusammen mit Ihren eigenen Check-in-, Check-out- und Belegungsparametern aus. Um mehrere Städte abzudecken, schleifen Sie über eine Liste von IDs und rufen Sie fetch_agoda_page für jede auf.

Meine Selektoren geben leere Strings zurück. Was hat sich geändert?

Höchstwahrscheinlich Agodas Markup. Seine data-selenium- und data-element-name-Hooks und seine generierten Klassennamen ändern sich ohne Vorankündigung, sodass Selektoren, die letzten Monat funktioniert haben, brechen können. Untersuchen Sie eine Live-Seite in den Entwicklertools Ihres Browsers und aktualisieren Sie die Selektoren. Regelmäßige Selektorwartung ist für jeden Produktions-Scraper normal.

Wie gehe ich mit CAPTCHAs und Sperren bei Agoda um?

Agoda verwendet CAPTCHAs und andere Bot-Erkennungstechniken bei automatisiertem Traffic. Die Crawling API erledigt das für Sie mit browserbasiertem Rendering und serverseitiger IP-Rotation, sodass die meisten Herausforderungen behandelt werden, bevor das HTML Ihren Code erreicht. Darüber hinaus staffeln Sie Ihre Anfragen, variieren Ihre Ziele und reduzieren die Geschwindigkeit, wenn Sie anfangen, Nicht-200-cb_status-Werte zu sehen, anstatt hart zu wiederholen.

Jetzt loslegen

Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.

Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar