APIFY Actor สำหรับการแยกข้อมูลเกี่ยวกับโรงแรมจาก Booking.com
Booking.com ให้บริการที่พักหลายประเภททั่วโลก ส่วนต่อประสานผู้ใช้
ค่อนข้างเป็นมิตรสำหรับผู้ใช้มนุษย์อย่างไรก็ตามเพื่อรับข้อมูลในรูปแบบที่สามารถประมวลผลได้ของเครื่องจักร
ไม่ใช่งานง่าย ๆ เนื่องจากไม่มี Booking.com API อย่างเป็นทางการ นี่คือที่ apify ใหม่นี้
นักแสดงมีประโยชน์
นักแสดงคนนี้สกัดข้อมูลโรงแรมจาก booking.com สามารถแยกได้โดยตรงจาก
หน้ารายการโรงแรมหรือนำทางไปยังหน้ารายละเอียดเพื่อรับข้อมูลรายละเอียดเพิ่มเติม
ผลลัพธ์สามารถสั่งซื้อได้โดยเกณฑ์ใด ๆ ที่สนับสนุนโดย Booking.com
เนื่องจาก Booking.com อนุญาตให้มีการค้นหาเพียง 1,000 รายการในกรณีที่คุณต้องการดาวน์โหลดเพิ่มเติม
คุณจะต้องใช้แอตทริบิวต์ useFilters
เพื่อบอกให้ Crawler enqueue เกณฑ์ทั้งหมด
หน้ากรอง สิ่งนี้จะเอาชนะขีด จำกัด แต่จะเพิ่มเวลาคลานอย่างมีนัยสำคัญ
อินพุตเป็นวัตถุ 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.comdestType
ระบุประเภทของการค้นหาค่าที่มีอยู่คือ city
และ region
simple
กำหนดว่าควรแยกข้อมูลออกจากหน้ารายการค่าเริ่มต้นเป็น false
useFilters
ตั้งค่าหากตัวรวบรวมข้อมูลควรใช้ตัวกรองเกณฑ์เพื่อเอาชนะขีด จำกัด สำหรับ 1,000 ผลลัพธ์minScore
ระบุคะแนนขั้นต่ำที่อนุญาตของโรงแรมที่จะรวมอยู่ในผลลัพธ์เริ่มต้นคือ 8.4
maxPages
กำหนดจำนวนหน้าการแบ่งหน้าสูงสุดที่จะคลานcheckIn
วันที่เช็คอินในรูปแบบ MM-DD-YYYYcheckOut
เช็คเอาต์ในรูปแบบ MM-DD-YYYYrooms
พักที่จะตั้งค่าสำหรับการค้นหา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 เป็น
หลีกเลี่ยงการปะทะพารามิเตอร์ 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 จะแสดงผลสูงสุด 1,000 ผลลัพธ์หากคุณต้องการหลีกเลี่ยงข้อ จำกัด นี้
คุณสามารถใช้แอตทริบิวต์อินพุต useFilters
อย่างไรก็ตามในกรณีเช่นนี้จะไม่สามารถทำได้
หากต้องการใช้ตัวกรอง จำกัด ใน URL เริ่มต้นเนื่องจากมีดโกนจะแทนที่เหล่านั้น
หากคุณต้องการรับ checkIn
เกี่ยวกับห้องที่เฉพาะ
คุณลักษณะอินพุต checkOut
(booking.com แสดงข้อมูลห้องสำหรับวันที่เฉพาะ)