UrlFetchApp возвращает ответ, отличный от того, что я вижу в браузере
Я пытаюсь собрать цены на отели с сайта Booking.com, и теперь получаю странное тело ответа, которое отличается от того, что я вижу в своем браузере в приватном режиме.
Когда вы запустите Google Script ниже, вы получите "2178" JPY в результате, и, просто нажав тот же URL в адресной строке в приватном режиме, вы увидите "2420" JPY.
function myfunction() {
var destid = '2658464';
var year = '2018';
var checkin_month = '12';
var checkin_monthday = '20';
var checkout_month = '12';
var checkout_monthday = '21';
var url = 'https://www.booking.com/searchresults.en-gb.html?checkin_year=' + year + '&checkin_month='
+ checkin_month + '&checkin_monthday=' + checkin_monthday + '&checkout_year=' + year + '&checkout_month=' + checkout_month + '&checkout_monthday=' + checkout_monthday
+ '&no_rooms=1&group_adults=1&group_children=0&dest_id=' + destid + '&dest_type=hotel&selected_currency=JPY';
Logger.log(url);
var html = UrlFetchApp.fetch(url).getContentText();
// Retrieve 'div' that contains the top search result
var res = Parser.data(html).from("<span class=\"sr-hotel__name").to("class=\"sr_item sr_item_new sr_item_default").build().trim();
var price;
if ( res.indexOf('sold out on') != -1 ) { //when sold out on specified date
Logger.log( 'SOLD OUT' );
} else if ( res.indexOf('Dormitory') != -1 && res.indexOf( destid ) != -1 ){ //if its dormitory room and contains specified destId
// retrieve price value in <b> tag
price = Parser.data(res).from("<b>\n¥").to("</b>").build().trim().replace(new RegExp('[^0-9]', 'g'), '');
Logger.log('Price: ' + price);
} else {
Logger.log( 'SOLD OUT' );
}
}
По сути, Booking.com отображает цену со скидкой в соответствии с уровнем лояльности (называемым Genius Booker) пользователя, который в данный момент входит в систему. Мой сценарий каким-то образом возвращает цену со скидкой, даже при наличии каких-либо учетных данных.
В большинстве случаев мои сценарии работают достаточно хорошо, чтобы показать первоначальную цену, но для некоторых отелей он возвращает льготную цену для книг Genius.
Как вы думаете, почему это произошло, и есть ли способ заставить скрипты всегда возвращать первоначальную цену?
Спасибо за ваше время.