Apifizierer Akteur zum Extrahieren von Daten zu Hotels von Booking.com.
Booking.com bietet verschiedene Arten von Unterkünften auf der ganzen Welt. Die Benutzeroberfläche
ist für einen menschlichen Benutzer sehr freundlich, um die Daten jedoch in einem verarbeitbaren maschinellen Format zu erhalten
ist keine einfache Aufgabe, da es keine offizielle Booking.com -API gibt. Hier ist dieser neue Apify
Schauspieler ist nützlich.
Dieser Schauspieler extrahiert Hoteldaten von Booking.com, er kann entweder direkt aus extrahieren
Die Hotelliste oder navigieren Sie zur Detailseite, um detailliertere Informationen zu erhalten.
Die Ergebnisse können durch alle von Booking.com unterstützten Kriterien bestellt werden.
Da Booking.com nur 1000 Suchergebnisse zulässt, müssen Sie mehr herunterladen.
Sie müssen das Attribut für useFilters
verwenden, um dem Crawler zu sagen
gefilterte Seiten. Dies wird die Grenze überwinden, aber die Kriechzeit erheblich erhöhen.
Eingabe ist ein JSON -Objekt mit den folgenden Eigenschaften:
{
"search" : SEARCH_QUERY ,
"destType" : DESTINATION_TYPE ,
"simple" : EXTRACT_FROM_LIST ,
"useFilters" : USE_CRITERIA_FILTERING ,
"minScore" : MINIMUM_HOTEL_RATING ,
"maxPages" : MAXIMUM_PAGINATION_PAGES ,
"concurrency" : MAXIMUM_CONCURRENT_PAGES ,
"checkIn" : CHECK_IN_DATE ,
"checkOut" : CHECK_OUT_DATE ,
"rooms" : NUMBER_OF_ROOMS ,
"adults" : NUMBER_OF_ADULTS ,
"children" : NUMBER_OF_CHILDREN ,
"currency" : PREFERRED_CURRENCY ,
"language" : PREFERRED_LANGUAGE ,
"sortBy" : BOOKING_SORT_TYPE ,
"propertyType" : PROPERTY_TYPE ,
"minMaxPrice" : MIN_MAX_PRICE_RANGE ,
"proxyConfig" : APIFY_PROXY_CONFIG
}
search
ist das einzige erforderliche Attribut. Dies ist die Suche in Booking.com Suchabfrage.destType
gibt an, die Art der Suche, verfügbare Werte sind city
und region
.simple
Definition, ob die Daten nur auf der Listenseite extrahiert werden sollten, ist Standard false
.useFilters
setzt, wenn der Crawler Kriterienfilter verwenden sollte, um die Grenze für 1000 Ergebnisse zu überwinden.minScore
gibt die minimal zulässige Bewertung des Hotels an, die in die Ergebnisse einbezogen werden soll. Der Standard beträgt 8.4
.maxPages
legt die maximale Anzahl von Paginationsseiten fest, die gekrabbelt werden sollen.checkIn
Check-in-Datum im MM-DD-yyyy-Format.checkOut
Check-out-Datum im MM-DD-yyyy-Format.rooms
Anzahl der Räume, die für die Suche festgelegt sind.adults
Anzahl von Erwachsenen, die für die Suche festgelegt sind.children
Anzahl der Kinder, die für die Suche festgelegt sind.currency
bevorzugt Währungscode, die auf der Website festgelegt werden soll.language
bevorzugte Sprachcode, die auf der Website festgelegt werden soll.propertyType
-Eigenschaftstypen für die Suche werden Filter verwendet und können daher nicht mit useFilters
kombiniert werden. [
"none" ,
"Hotels" ,
"Apartments" ,
"Hostels" ,
"Guest houses" ,
"Homestays" ,
"Bed and breakfasts" ,
"Holiday homes" ,
"Boats" ,
"Villas" ,
"Motels" ,
"Holiday parks" ,
"Campsites" ,
"Luxury tents"
]
minMaxPrice
Min-Max-Preisspanne, es wird Filter verwendet und nicht mit useFilters
kombiniert werden. [
"none" ,
"0-50" ,
"50-100" ,
"100-150" ,
"150-200" ,
"200+"
]
proxyConfig
definiert die APIFY -Proxy -Konfiguration und sollte dieses Format respektieren: "proxyConfig" : {
"useApifyProxy" : true ,
"apifyProxyGroups" : [
"RESIDENTIAL" ,
...
]
}
sortBy
legt ein Hotelattribut fest, mit dem die Ergebnisse bestellt werden, muss eines der folgenden sein. [
"bayesian_review_score" , // Rating
"popularity" , // Popularity
"price" , // Price
"review_score_and_price" , // Rating and price
"class" , // Stars
"class_asc" , // Stars ascending
"distance_from_landmark" // Distance from city centre
]
Anstelle eines search
ist es auch möglich, den Crawler mit einer Reihe von startUrls
zu starten.
In diesem Fall werden alle anderen Attribute, die die URLs ändern
Verwenden Sie einfache URLs und setzen Sie alle anderen Optionen mit Eingabeattributen ein, anstatt sie in der URL zu lassen
Vermeiden Sie das Zusammenstoß über URL -Parameter.
Für den Fall, dass es sich bei der Starturl um eine Hoteldetail -Seite handelt, wird sie abgekratzt. Falls es sich um eine Hotellistenseite handelt, das Ergebnis
hängt vom simple
Attribut ab. Wenn es true
ist, wird die Seite abgekratzt, sonst alle Links zu
Detailseiten werden der Warteschlange hinzugefügt und danach abgekratzt.
Das startUrls
-Attribut sollte eine Reihe von URLs wie folgt Cotain:
{
"startUrls" : [
"https://www.booking.com/hotel/fr/ariane-montparnasse.en-gb.html" ,
"https://www.booking.com/hotel/fr/heliosopera.en-gb.html" ,
"https://www.booking.com/hotel/fr/ritz-paris-paris.en-gb.html" ,
...
] ,
"simple" : false ,
"minScore" : 8.4 ,
...
}
Bei der Verwendung des simple
Eingangsattributs kann ein Beispielausgang für ein einzelnes Hotel so aussehen:
{
"url" : "https://www.booking.com/hotel/cz/elia-ky-kra-snohorska-c-apartments-prague.en-gb.html" ,
"name" : "Centrum Apartments Old Town" ,
"rating" : 10 ,
"reviews" : 7 ,
"stars" : 4 ,
"price" : 86 ,
"currency" : "€" ,
"roomType" : "Deluxe Three-Bedroom Apartment with Terrace" ,
"persons" : 4 ,
"address" : "Prague 01, Prague" ,
"location" : {
"lat" : "14.4199419021606" ,
"lng" : "50.0903216331068"
}
}
Andernfalls ist die Ausgabe viel umfassender, insbesondere das rooms
-Array, die dies jedoch tun wird
Daten nur dann enthalten, wenn die Attribute checkIn
und checkOut
-Eingaben festgelegt sind.
{
"url" : "https://www.booking.com/hotel/cz/elia-ky-kra-snohorska-c-apartments-prague.en-gb.html" ,
"name" : "Centrum Apartments Old Town" ,
"type" : "Apartment" ,
"description" : "Situated in the centre of Prague in a historical building near the Pařížská street, 500 metres from the Old Town Square, the Pragueaparts Old town E offers..." ,
"stars" : "4" ,
"rating" : 10 ,
"reviews" : 7 ,
"breakfast" : null ,
"checkIn" : "15:00" ,
"checkOut" : "00:00" ,
"location" : {
"lat" : "50.0903216" ,
"lng" : "14.4199419"
} ,
"address" : {
"full" : "Elišky Krásnohorské 2, Prague, 11000, Czech Republic" ,
"postalCode" : "11000" ,
"street" : "Elišky Krásnohorské 2" ,
"country" : "Czech Republic" ,
"region" : ""
} ,
"image" : "https://t-ec.bstatic.com/images/hotel/max1024x768/183/183313960.jpg" ,
"rooms" : [
{
"available" : true ,
"roomType" : "Deluxe Three-Bedroom Apartment with Terrace" ,
"bedType" : " Bedroom 1: 1 extra-large double bed Bedroom 2: 2 single beds Bedroom 3: 3 single beds and 1 sofa bed " ,
"persons" : 1 ,
"price" : 85.54 ,
"currency" : "€" ,
"features" : [
"80 m²" ,
"City view" ,
"Terrace" ,
"Flat-screen TV" ,
"Air conditioning" ,
"Private bathroom" ,
...
] ,
"conditions" : [
"Non-refundable"
]
} ,
...
]
}
Der Schauspieler funktioniert nicht ohne Proxy, dh wenn Sie versuchen, ihn auszuführen, ohne einen Proxy festzulegen, fehlschlägt dies mit einer Nachricht, die genau das erklärt.
Booking.com zeigt nur maximal 1000 Ergebnisse an, wenn Sie diese Einschränkung umgehen müssen.
Sie können das Eingangsattribut useFilters
verwenden. In diesem Fall wird es jedoch nicht möglich sein
Um alle begrenzenden Filter in Start -URLs zu verwenden, da der Schaber diese überschreibt.
Wenn Sie Daten zu bestimmten Räumen erhalten müssen, muss der Crawler mit checkIn
und gestartet werden
checkOut
-Eingangsattribute (Buchung.com zeigt nur Rauminformationen für bestimmte Daten).