Apify Actor untuk mengekstraksi data tentang hotel dari booking.com.
Booking.com menyediakan berbagai jenis akomodasi di seluruh dunia. Antarmuka pengguna
cukup ramah untuk pengguna manusia, namun untuk mendapatkan data dalam format yang dapat diproses mesin
bukan tugas sederhana, karena tidak ada API Booking.com resmi. Di sinilah pemasangan baru ini
Aktor berguna.
Aktor ini mengekstrak data hotel dari booking.com, dapat diekstraksi langsung dari
Halaman daftar hotel atau navigasikan ke halaman detail untuk mendapatkan informasi lebih rinci.
Hasilnya dapat dipesan dengan kriteria apa pun yang didukung oleh Booking.com.
Karena booking.com hanya memungkinkan 1000 hasil pencarian, jika Anda perlu mengunduh lebih banyak,
Anda perlu menggunakan atribut useFilters
untuk memberi tahu crawler untuk membuat semua kriteria
halaman yang difilter. Ini akan mengatasi batasnya, tetapi akan secara signifikan meningkatkan waktu merangkak.
Input adalah objek JSON dengan properti berikut:
{
"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
adalah satu -satunya atribut yang diperlukan. Ini adalah permintaan pencarian booking.com.destType
Menentukan jenis pencarian, nilai yang tersedia adalah city
dan region
.simple
Jika data harus diekstraksi hanya dari halaman daftar, default false
.useFilters
menetapkan jika crawler harus menggunakan filter kriteria untuk mengatasi batas untuk 1000 hasil.minScore
menentukan peringkat minimum yang diizinkan dari hotel untuk dimasukkan dalam hasil, default adalah 8.4
.maxPages
menetapkan jumlah maksimum halaman pagination untuk dirangkak.checkIn
dalam format MM-DD-yyyy.checkOut
Check-Out Tanggal dalam format MM-DD-YYYY.rooms
Jumlah kamar yang akan ditetapkan untuk pencarian.adults
orang dewasa yang akan ditetapkan untuk pencarian.children
Jumlah anak yang akan ditetapkan untuk pencarian.currency
untuk ditetapkan di Situs.language
ditetapkan di Situs.propertyType
properti untuk dicari, itu akan menggunakan filter, jadi tidak dapat dikombinasikan dengan useFilters
. [
"none" ,
"Hotels" ,
"Apartments" ,
"Hostels" ,
"Guest houses" ,
"Homestays" ,
"Bed and breakfasts" ,
"Holiday homes" ,
"Boats" ,
"Villas" ,
"Motels" ,
"Holiday parks" ,
"Campsites" ,
"Luxury tents"
]
minMaxPrice
Min-Max Range, itu akan menggunakan filter, jadi tidak dapat dikombinasikan dengan useFilters
. [
"none" ,
"0-50" ,
"50-100" ,
"100-150" ,
"150-200" ,
"200+"
]
proxyConfig
mendefinisikan konfigurasi proxy APIFY, itu harus menghormati format ini: "proxyConfig" : {
"useApifyProxy" : true ,
"apifyProxyGroups" : [
"RESIDENTIAL" ,
...
]
}
sortBy
menetapkan atribut hotel yang dengannya hasilnya akan dipesan, harus menjadi salah satu dari yang berikut. [
"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
]
Alih -alih atribut input search
, juga dimungkinkan untuk memulai crawler dengan array startUrls
.
Dalam kasus seperti itu semua atribut lain yang memodifikasi URL masih akan diterapkan, oleh karena itu disarankan untuk
Gunakan URL sederhana dan atur semua opsi lain menggunakan atribut input alih -alih meninggalkannya di URL untuk
Hindari parameter URL yang berselisih.
Jika Starturl adalah halaman detail hotel, itu akan dikikis. Jika itu adalah halaman daftar hotel, hasilnya
akan tergantung pada atribut simple
. Jika itu true
, halaman akan dikikis, jika tidak semua tautan
Halaman detail akan ditambahkan ke antrian dan dikikis sesudahnya.
Atribut startUrls
harus menata berbagai URL sebagai berikut:
{
"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 ,
...
}
Dalam hal menggunakan atribut input simple
, output contoh untuk satu hotel dapat terlihat seperti ini:
{
"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"
}
}
Kalau tidak, output akan jauh lebih komprehensif, terutama array rooms
, yang akan
berisi data hanya jika atribut input checkIn
dan checkOut
diatur.
{
"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"
]
} ,
...
]
}
Aktor tidak akan bekerja tanpa proxy, yaitu jika Anda mencoba menjalankannya tanpa mengatur proxy, itu akan gagal dengan pesan yang menjelaskan hal itu.
Booking.com hanya akan menampilkan maksimum 1000 hasil, jika Anda perlu menghindari batasan ini,
Anda dapat menggunakan atribut input useFilters
. Namun, dalam kasus seperti itu tidak mungkin
Untuk menggunakan filter pembatas di URL start, karena scraper akan mengesampingkannya.
Jika Anda perlu mendapatkan data tentang kamar tertentu, crawler perlu dimulai dengan checkIn
dan
Atribut input checkOut
(booking.com hanya menunjukkan info kamar untuk tanggal tertentu).