从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仅显示特定日期的房间信息)。