Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Добрый день.

Есть скрипт парсинга booking.com. Он работал, но перестал работать после изменения сайта booking.

Нужно исправить, чтобы работало :)

Функция getBookingResult получает параметр $link, а на выходе массив отелей.

Структура на выходе: 

return array(

'hotel'=>$hotel, - Название отеля

'stars'=>$stars, - Кол-во звезд (может отсутствовать на сайте)

'estimate'=>$estimate, - Оценка (в числовом виде)

'estimatetext'=>$estimatetext, Оценка (в текстовом виде)

'nights'=>$nights, - Кол-во ночей

'cost'=>$cost, - Итоговая реальная стоимость (в рублях)

'discount'=>$discount, - Скидка на отель (если таковая имеется)

'url' => $url - Ссылка на этот отель

);

За работу предлагаю 20 USD

Спасибо.

header("Content-type: text/html; charset=utf-8");

function getBookingHotelInfo($result){

$ex = explode('

', $result);

$ex = explode('', $ex['1']);

$e = explode('', $ex['0']);

$e = explode('', $e['1']);

$estimatetext = trim($e['0']);

$e = explode('', $ex['0']);

$e = explode('', $e['1']);

$estimate = trim($e['0']);

$ex = explode('

$ex = explode('>', $ex['0']);

$e = explode('"', $e['1']);

$url =  'http://www.booking.com/'.trim($e['0']);

$hotel = trim($ex[count($ex)-1]);

$ex = explode('ratings_stars_', $result);

if(isset($ex['1'])){

$ex = explode(' ', $ex['1']);

}else{

$ex = explode('ratings_circles_', $result);

$ex = explode('star_track', $ex['1']);

}

$stars = trim($ex['0']);

$ex = explode('span class="price_for_x_nights_format">', $result);

$ex = explode('', $ex['1']);

$nights =  preg_replace('|[^0-9]+|sUS', '', $ex['0']);

$ex = explode('', $result);

if(isset($ex['1'])){

//echo $ex['0'];die();

$ex = explode('%', $ex['0']);

$ex = explode('rel="290">', $ex['0']);

$discount = preg_replace('|[^0-9]+|sUS', '', $ex['1']);

}else{

$discount = 0;

}

return array('hotel'=>$hotel,

'stars'=>$stars,

'estimate'=>$estimate,

'estimatetext'=>$estimatetext,

'nights'=>$nights,

'cost'=>$cost,

'discount'=>$discount,

'url' => $url

);

}

function getBookingResult($link){

$path = '/var/www/studio/data/www/dev12/path/cookie.txt'; // куда ложим cookie нужно обязательно прописать.

$ci = curl_init();

curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($ci, CURLOPT_TIMEOUT, 30);

curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ci, CURLOPT_HEADER, 1);

curl_setopt($ci, CURLOPT_COOKIEFILE, $path);

curl_setopt($ci, CURLOPT_COOKIEJAR, $path); 

curl_setopt($ci, CURLOPT_URL, $link);

$mmm = 1;

if($mmm == 1){

curl_setopt($ci, CURLOPT_HTTPHEADER, array(

        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",             

        "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",

        "Content-Type: application/x-www-form-urlencoded; charset=utf-8",

        "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0",

        "X-MicrosoftAjax: Delta=true",

        "X-Requested-With: XMLHttpRequest",             

        "Cache-Control: no-cache",

        "Connection: keep-alive",

        "Pragma: no-cache"

    ));

    

}

 

$bresult = curl_exec($ci);

return $bresult;

}

// Примеры для теста

$link1 = 'http://www.booking.com/searchresults.ru.html?dest_type=city;city=-825650;no_rooms=1;group_adults=2;group_children=0;nflt=class%3D4%3Bclass%3D5%3B;review_score=80;radius=10;checkin_monthday=15;checkin_year_month=2016-04;checkout_monthday=18;checkout_year_month=2016-04;order=price_for_two;selected_currency=RUB';

$link2 = 'http://www.booking.com/searchresults.ru.html?dest_type=city;city=-850553;no_rooms=1;group_adults=2;group_children=0;nflt=class%3D4%3Bclass%3D5%3B;review_score=80;radius=10;checkin_monthday=15;checkin_year_month=2016-04;checkout_monthday=18;checkout_year_month=2016-04;order=price_for_two;selected_currency=RUB';

$link3 = 'http://www.booking.com/searchresults.ru.html?dest_type=city;city=-130467;no_rooms=1;group_adults=2;group_children=0;nflt=class%3D3%3Bclass%3D4%3Bclass%3D5%3B;review_score=80;radius=10;checkin_monthday=15;checkin_year_month=2016-04;checkout_monthday=18;checkout_year_month=2016-04;order=price_for_two;selected_currency=RUB';

getBookingResult($link1);

8 лет назад
sarmaev
44 годаРоссия
14 лет в сервисе
Был
4 года назад
Выбранный исполнитель
PhpSoft
49 летУкраина
16 лет в сервисе
Был
2 часа назад
8 лет назад
$20
1 день
За 40 минут сделал работу на 300%. Рекомендую.
Сотрудничество принесло только положительные эмоции по всем статьям, потому рекомендую Виталия как отличного заказчика всеми руками :)