ACIFIE ACTOR pour extraire des données sur les hôtels de Booking.com.
Booking.com fournit différents types d'hébergement partout dans le monde. L'interface utilisateur
est tout à fait convivial pour un utilisateur humain, cependant, pour obtenir les données dans un format de transformation de machine
n'est pas une tâche simple, car il n'y a pas d'API officielle Booking.com. C'est là que ce nouvel apify
L'acteur est utile.
Cet acteur extrait les données d'hôtel de Booking.com, elle peut soit extraire directement de
La page de la liste des hôtels ou accédez à la page de détail pour obtenir des informations plus détaillées.
Les résultats peuvent être commandés par tous les critères pris en charge par Booking.com.
Étant donné que Booking.com n'autorise que 1000 résultats de recherche, au cas où vous auriez besoin de télécharger plus,
Vous devrez utiliser l'attribut useFilters
pour dire au robot pour mettre en place tous les critères
pages filtrées. Cela surmontera la limite, mais augmentera considérablement le temps de rampe.
L'entrée est un objet JSON avec les propriétés suivantes:
{
"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
est le seul attribut requis. Ceci est la requête de recherche Booking.com.destType
spécifie le type de recherche, les valeurs disponibles sont city
et region
.simple
définit si les données doivent être extraites uniquement à partir de la page de liste, la valeur par défaut est false
.useFilters
RETTS Si le Crawler doit utiliser des filtres de critères pour surmonter la limite de 1000 résultats.minScore
spécifie la notation minimale autorisée de l'hôtel à inclure dans les résultats, la valeur par défaut est 8.4
.maxPages
définit le nombre maximal de pages de pagination à ramper.checkIn
la date d'enregistrement au format MM-Dd-Yyyy.checkOut
la date de paiement au format MM-Dd-Yyyy.rooms
Nombre de chambres à définir pour la recherche.adults
adultes à définir pour la recherche.children
d'enfants à définir pour la recherche.currency
à définir sur le site.language
Code de langue privilégié à définir sur le site.propertyType
Type de propriété à rechercher, il utilisera des filtres, il ne peut donc pas être combiné avec useFilters
. [
"none" ,
"Hotels" ,
"Apartments" ,
"Hostels" ,
"Guest houses" ,
"Homestays" ,
"Bed and breakfasts" ,
"Holiday homes" ,
"Boats" ,
"Villas" ,
"Motels" ,
"Holiday parks" ,
"Campsites" ,
"Luxury tents"
]
minMaxPrice
Min-Max Prix Gamme, il utilisera des filtres, il ne peut donc pas être combiné avec useFilters
. [
"none" ,
"0-50" ,
"50-100" ,
"100-150" ,
"150-200" ,
"200+"
]
proxyConfig
définit la configuration proxy apify, il doit respecter ce format: "proxyConfig" : {
"useApifyProxy" : true ,
"apifyProxyGroups" : [
"RESIDENTIAL" ,
...
]
}
sortBy
définit un attribut d'hôtel par lequel les résultats seront commandés, doivent être l'un des éléments suivants. [
"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
]
Au lieu de search
d'attribut d'entrée, il est également possible de démarrer le robot avec un tableau de startUrls
.
Dans ce cas, tous les autres attributs modifiant les URL seront toujours appliqués, il est donc suggéré à
Utilisez des URL simples et définissez toutes les autres options à l'aide d'attributs d'entrée au lieu de les laisser dans l'URL pour
Évitez le conflit des paramètres URL.
Dans le cas où le starturl est une page de détail de l'hôtel, il sera gratté. Dans le cas où il s'agit d'une page de liste d'hôtel, le résultat
dépendra de l'attribut simple
. Si c'est true
, la page sera grattée, sinon tous les liens vers
Des pages détaillées seront ajoutées à la file d'attente et grattées par la suite.
L'attribut startUrls
doit cuire un tableau d'URL comme suit:
{
"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 ,
...
}
En cas d'utilisation de l'attribut d'entrée simple
, un exemple de sortie pour un seul hôtel peut ressembler à ceci:
{
"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"
}
}
Sinon, la production sera beaucoup plus complète, en particulier le tableau rooms
, ce qui sera cependant
contenir des données uniquement si les attributs d'entrée checkIn
et checkOut
sont définis.
{
"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"
]
} ,
...
]
}
L'acteur ne fonctionnera pas sans proxy, c'est-à-dire que si vous essayez de l'exécuter sans définir un proxy, il échouera avec un message expliquant exactement cela.
Booking.com affichera seulement un maximum de 1000 résultats, si vous avez besoin de contourner cette limitation,
Vous pouvez utiliser l'attribut d'entrée useFilters
. Cependant, dans un tel cas, ce ne sera pas possible
Pour utiliser tous les filtres limitants dans les URL de démarrage, car le grattoir les remplacera.
Si vous avez besoin d'obtenir des données sur des pièces spécifiques, le robot doit être démarré avec checkIn
et
Attributs d'entrée checkOut
(Booking.com affiche uniquement les informations sur la pièce pour des dates spécifiques).