Apify Actor для извлечения данных о отелях с Booking.com.
Booking.com предоставляет различные виды жилья по всему миру. Пользовательский интерфейс
довольно дружелюбно для пользователя человека, однако, чтобы получить данные в обработанном формате машины
это не простая задача, так как нет официального API Booking.com. Вот где этот новый Apify
Актер пригодится.
Этот актер извлекает данные отеля с booking.com, он может либо извлечь непосредственно из
Страница списка отелей или перейдите на страницу с подробной информацией, чтобы получить более подробную информацию.
Результаты могут быть заказаны по любым критериям, поддерживаемым Booking.com.
Поскольку Booking.com допускает только 1000 результатов поиска, если вам нужно больше скачать,
Вам нужно будет использовать атрибут useFilters
, чтобы сказать Crawler, чтобы внести все возможное
Отфильтрованные страницы. Это преодолеет предел, но значительно увеличит время ползания.
Ввод - это объект JSON со следующими свойствами:
{
"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
является единственным необходимым атрибутом. Это поисковый запрос Booking.com.destType
указывает тип поиска, доступными значениями являются city
и region
.simple
определяет, следует ли извлечь ли данные только со страницы списка, по умолчанию является false
.useFilters
устанавливает, если гусеница должна использовать критерии фильтров для преодоления предела для 1000 результатов.minScore
указывает минимальный допустимый рейтинг отеля, который будет включен в результаты, дефолт составляет 8.4
.maxPages
устанавливает максимальное количество страниц страниц страниц.checkIn
дату регистрации в формате MM-DD-YYYY.checkOut
проверку в формате MM-DD-YYYY.rooms
Количество комнат, которые будут установлены для поиска.adults
количество взрослых будут установлены для поиска.children
число детей будет установлено для поиска.currency
предпочитаемый валютный код, который будет установлен на сайте.language
код, предпочитаемый языковым, должен быть установлен на сайте.propertyType
Тип свойства для поиска, он будет использовать фильтры, поэтому не может быть объединен с useFilters
. [
"none" ,
"Hotels" ,
"Apartments" ,
"Hostels" ,
"Guest houses" ,
"Homestays" ,
"Bed and breakfasts" ,
"Holiday homes" ,
"Boats" ,
"Villas" ,
"Motels" ,
"Holiday parks" ,
"Campsites" ,
"Luxury tents"
]
minMaxPrice
Min-Max, он будет использовать фильтры, поэтому не может быть объединен с useFilters
. [
"none" ,
"0-50" ,
"50-100" ,
"100-150" ,
"150-200" ,
"200+"
]
proxyConfig
определяет конфигурацию прокси Apify, он должен уважать этот формат: "proxyConfig" : {
"useApifyProxy" : true ,
"apifyProxyGroups" : [
"RESIDENTIAL" ,
...
]
}
sortBy
устанавливает атрибут отеля, с помощью которого результаты будут заказаны, должен быть одним из следующих. [
"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
]
Вместо атрибута ввода search
также возможно запустить гусеница с массивом startUrls
.
В таком случае все другие атрибуты, изменяющие URL -адреса, все еще будут применяться, поэтому предлагается
Используйте простые URL -адрес
Избегайте столкновения параметров URL.
В случае, если Starturl - это страница с подробностями отеля, она будет покраснена. В случае, если это страница списка отелей, результат
будет зависеть от simple
атрибута. Если это true
, страница будет соскребается, в противном случае все ссылки на
Подробные страницы будут добавлены в очередь и потомки впоследствии.
Атрибут startUrls
должен составить массив URL -адресов следующим образом:
{
"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 ,
...
}
В случае использования simple
атрибута ввода пример вывода для одного отеля может выглядеть так:
{
"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"
}
}
В противном случае результат будет гораздо более полной, особенно в массиве rooms
, который, однако, будет
содержат данные только в том случае, если установлены атрибуты ввода checkIn
и 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"
]
} ,
...
]
}
Актер не будет работать без прокси, то есть, если вы попытаетесь запустить его без установки прокси, он потерпит неудачу с сообщением, объясняющим именно это.
Booking.com будет отображать максимум 1000 результатов, если вам нужно обойти это ограничение,
Вы можете использовать атрибут ввода useFilters
. Однако в таком случае это не будет возможно
Чтобы использовать любые ограничивающие фильтры в начальных URL -адресах, потому что скребок переопределяет их.
Если вам нужно получить данные о конкретных комнатах, нужно запустить с checkIn
и
Атрибуты ввода checkOut
(Booking.com показывает только информацию о комнате для конкретных дат).