APIFY ACTOR para extraer datos sobre hoteles de Booking.com.
Booking.com ofrece varios tipos de alojamiento en todo el mundo. La interfaz de usuario
es bastante amigable para un usuario humano, sin embargo, para obtener los datos en un formato procesable de la máquina.
No es una tarea simple, ya que no hay una API oficial de Booking.com. Aquí es donde este nuevo apify
El actor es útil.
Este actor extrae datos del hotel de Booking.com, puede extraer directamente de
la página de la lista de hotel o navegar a la página de detalles para obtener información más detallada.
Los resultados pueden ser ordenados por cualquier criterio respaldado por Booking.com.
Dado que Booking.com permite solo 1000 resultados de búsqueda, en caso de que necesite descargar más,
Deberá utilizar el atributo useFilters
para decirle al rastreador que enqueue todos los criterios
páginas filtradas. Esto superará el límite, pero aumentará significativamente el tiempo de rastreo.
La entrada es un objeto JSON con las siguientes propiedades:
{
"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
es el único atributo requerido. Esta es la consulta de búsqueda de Booking.com.destType
especifica el tipo de búsqueda, los valores disponibles son city
y region
.simple
define si los datos deben extraerse solo desde la página de la lista, el valor predeterminado es false
.useFilters
Conjuntos si el rastreador debe utilizar filtros de criterios para superar el límite de 1000 resultados.minScore
especifica la calificación mínima permitida del hotel que se incluirá en los resultados, el valor predeterminado es 8.4
.maxPages
establece un número máximo de páginas de paginación que se arrastrarán.checkIn
en el formato MM-DD-YYYY.checkOut
en el formato MM-DD-YYYY.rooms
Número de habitaciones que se prepararán para la búsqueda.adults
Número de adultos que se establecerán para la búsqueda.children
Número para ser preparado para la búsqueda.currency
se establecerá en el Sitio.language
se establecerá en el sitio.propertyType
de propiedad Tipo de búsqueda, usará filtros, por lo que no se puede combinar con useFilters
. [
"none" ,
"Hotels" ,
"Apartments" ,
"Hostels" ,
"Guest houses" ,
"Homestays" ,
"Bed and breakfasts" ,
"Holiday homes" ,
"Boats" ,
"Villas" ,
"Motels" ,
"Holiday parks" ,
"Campsites" ,
"Luxury tents"
]
minMaxPrice
Min-Max, usará filtros, por lo que no se puede combinar con useFilters
. [
"none" ,
"0-50" ,
"50-100" ,
"100-150" ,
"150-200" ,
"200+"
]
proxyConfig
Define la configuración de proxy de apify, debe respetar este formato: "proxyConfig" : {
"useApifyProxy" : true ,
"apifyProxyGroups" : [
"RESIDENTIAL" ,
...
]
}
sortBy
establece un atributo de hotel por el cual se ordenarán los resultados, debe ser uno de los siguientes. [
"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
]
En lugar del atributo de entrada search
, también es posible iniciar el rastreador con una variedad de startUrls
.
En tal caso, todos los demás atributos que modifican las URL aún se aplicarán, por lo tanto, se sugiere que
Use URL simples y configure todas las otras opciones utilizando atributos de entrada en lugar de dejarlas en la URL para
Evite el choque de parámetros de URL.
En caso de que el starturl sea una página de detalles del hotel, se raspará. En caso de que sea una página de lista de hoteles, el resultado
dependerá del atributo simple
. Si es true
, la página se raspará, de lo contrario todos los enlaces a
Las páginas de detalles se agregarán a la cola y se rasparán después.
El atributo startUrls
debe cotain una variedad de URL de la siguiente manera:
{
"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 caso de usar el atributo de entrada simple
, una salida de ejemplo para un solo hotel puede verse así:
{
"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"
}
}
De lo contrario, la salida será mucho más completa, especialmente la matriz rooms
, que sin embargo
Contiene datos solo si se establecen los atributos de entrada checkIn
y checkOut
.
{
"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"
]
} ,
...
]
}
El actor no funcionará sin proxy, es decir, si intenta ejecutarlo sin configurar un proxy, fallará con un mensaje que explique exactamente eso.
Booking.com solo mostrará un máximo de 1000 resultados, si necesita eludir esta limitación,
Puede utilizar el atributo de entrada useFilters
. Sin embargo, en tal caso no será posible
Usar cualquier filtros limitantes en las URL de inicio, porque el raspador los anulará.
Si necesita obtener datos sobre habitaciones específicas, el rastreador debe iniciarse con checkIn
y
Los atributos de entrada checkOut
(Booking.com solo muestra información de la habitación para fechas específicas).