从Booking.com搜索结果页面检索酒店价格

时间:2018-08-19 11:51:47

标签: javascript google-apps-script web-scraping http-post gas

我正在尝试从Google Apps脚本中检索Booking.com搜索结果页面上的酒店价格,如以下代码所示,但是不知何故,它似​​乎只返回Booking.com的首页。

  var formData = {
    'ss':'Kyoto',
    'checkin_year':'2018',
    'checkin_month':'10',
    'checkin_monthday':'1',
    'checkout_year':'2018',
    'checkout_month':'10',
    'checkout_monthday':'2',
    'no_rooms':'1',
    'group_adults':'1'
  }

  var options = {
    'method' : 'post',
    'payload' : formData
  }

  var response = UrlFetchApp.fetch('http://booking.com/searchresults.ja.html', options);
  var html = response.getContentText('UTF-8');
  Logger.log(html);

当我使用以下地址访问浏览器时,该方法有效。我想在网上抓取这个结果。

https://www.booking.com/searchresults.ja.html?ss=kyoto&checkin_year=2018&checkin_month=10&checkin_monthday=1&checkout_year=2018&checkout_month=10&checkout_monthday=2&no_rooms=1&group_adults=1&group_children=0

有人可以帮助我前进吗?任何意见,将不胜感激!

2 个答案:

答案 0 :(得分:2)

使用POST是错误的,因为POST会将您的选项附加到邮件正文而不是URL。使用GET会将您的选项作为查询字符串?foo=bar附加到URL。

因此,请尝试将method中的options更改为get,以便将选项附加到URL:

var options = {
    'method' : 'get',
    'payload' : formData
}

答案 1 :(得分:-3)

您必须将响应转换为json格式

let url = 'https://example.com';

fetch(url)
.then(res => res.json())
.then((out) => {
  console.log('Checkout this JSON! ', out);
})
.catch(err => { throw err });