從booking.com提取有關酒店的數據的演員。
Booking.com在世界各地提供各種類型的住宿。使用者介面
對於人類用戶來說非常友好,但是以機器可加工格式獲取數據
這不是一個簡單的任務,因為沒有官方的booking.com API。這是這個新的app繞的地方
演員派上用場。
該演員從booking.com提取酒店數據,它可以直接從
酒店列表頁面或導航到詳細信息頁面以獲取更多詳細信息。
結果可以通過Booking.com支持的任何標準訂購。
由於Booking.com僅允許1000個搜索結果,因此,如果您需要下載更多,
您將需要利用useFilters
屬性來告訴爬蟲以符合所有條件
過濾的頁面。這將克服限制,但會大大增加爬行時間。
輸入是具有以下屬性的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
。checkOut
日期。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
定義了Apxify Proxy配置,它應尊重這種格式: "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中
避免使用URL參數衝突。
如果Starturl是酒店細節頁面,則將被刮擦。如果它是酒店列表頁面,結果
將取決於simple
屬性。如果是true
,則頁面將被刮擦,否則所有鏈接
詳細頁面將被添加到隊列中並之後被刮擦。
startUrls
屬性應如下所示:
{
"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僅顯示特定日期的房間信息)。