一休.COMをGASスクレイピングして掲載されているホテル宿泊価格をスプレッドシートに毎日ログを残す方法【Google Apps Script】

一休.COMに掲載されているホテル宿泊価格をGASでスクレイピングして、スプレッドシートに毎日ログを残す方法【Google Apps Script】 GAS

過剰な頻度でのWebサイトスクレイピングは、サーバーに負荷をかけとても被害の大きい行為です。

良識的な範囲でのスクレイピング頻度と、回数を心がけましょう。

加えて、取得データの悪用は違法行為として罰せられる可能性があります。

取得データの取り扱いにもご注意ください。

以上の点に留意したうえで、今回のGASスクレイピング記事をご覧ください。

一休.COMのサイトでスクレイピング対象のホテルを探す

今回は、一休.COMサイトのとあるホテルの宿泊プランをGASでスクレイピングして、毎日その価格をログとしてスプレッドシートに残したいと思います。

こういうことをしてみたくなったのは、コロナ禍が明けて、どれくらいのペースでホテルの宿泊価格が上昇していくのか、時系列データで確かめてみたくなったからです。

では一休.COMサイトに飛び、調べてみたいホテルをそれぞれ探してみてください。

ホテル予約・旅館予約[一休.com]
ホテル・旅館の宿泊予約は一休.com 国内約4,400の厳選されたホテル・旅館を「タイムセール」や「一休限定」など充実のプランでお得に予約。ワンランク上の旅行をお楽しみください。
画像に alt 属性が指定されていません。ファイル名: 2024-03-04-183627.jpg

私は今回、スクレイピング対象として「アパホテル 秋葉原駅電気街口」を選択しました。支店名がすでに良い雰囲気を醸し出しています。

スクレイピングURLを決定する

Webサイトのスクレイピングをするには、対象のURLと取得コンテンツのHTMLタグを見極める必要があります。

今回は、当日の宿泊プランを取得できるURLを選びます。

一休.COMのサイトでは、URLに含めるパラメータで様々な宿泊条件を設定することが可能です。

今表示しているページのURLは下のようなものなのですが、

https://www.ikyu.com/00081391/?adc=1&lc=1&ppc=1&rc=1&si=1&st=1&top=plans

URLの「」以降、7つのパラメータが付属しています。

このURLが意味する宿泊条件は「日付指定なし 1泊 大人1名 宿泊プランを安い順」に表示するというものになります。

URLパラメータの解説

ここで簡単にパラメータの解説をしたいと思います。

  • abc – 表示順を指定する。1なら「安い順」、2なら「高い順」になる。
  • lc – 宿泊日数を指定。1は1泊、5に設定すると5泊分の宿泊価格が表示される。
  • ppc – 大人の宿泊人数。1なら1人、2なら2人と人数を設定できる。
  • rc – 宿泊部屋数。宿泊する部屋数を指定する。3部屋押さえたければ3と設定する。
  • top – 部屋か、プランでのソートを指定。planならプランソート、roomなら部屋の条件で価格を表示する。

今回使用しませんでしたが、他にもいろいろなパラメータがあるようです。

  • cid,cod – 宿泊する日付を指定できる。例えば「cid=20240308&cod=20240310」のように指定すると、2024年3月8日~3月10日までの2泊価格が表示できます。
  • cac – 小学生高学年の人数。
  • cbc – 小学生低学年の人数。

ほかにも乳幼児の設定などをするパラメータもあり、特定条件での宿泊価格スクレイピングも可能です。

欲しい情報があるHTMLタグを特定する

スクレイピングURLが決まったところで、宿泊価格情報がおさめられているHTMLタグを特定します。

※スクレイピングURLは用途によって使い分けてください。

今回は「日付指定なし 1泊 大人2名 宿泊プランを安い順」で表示させたページのHTMLタグの特定を行います。

https://www.ikyu.com/00081391/?adc=1&lc=1&ppc=2&rc=1&si=1&st=1&top=plans

デベローパーツールを立ち上げて、まずプラン名のHTMLタグを探すと

class=”mb-4 inline text-xl font-bold text-gray-800″というクラス名を持つ、h3タグに収まっていました。

次に、ルーム名の収まっているタグを調べます。

class=”mb-2 inline-block cursor-pointer text-lg text-blue-700″というクラス名の、spanタグだとわかります。

最後に、料金情報について調べます。

class=”text-3xl font-bold”というクラス名の、spanタグにあることがわかりました。

では、わかった要素からスクレイピングスクリプトを書いていきます。

cheerio for Google Apps Scriptの導入

今回のスクレイピングには、CheerioというスクレイピングライブラリをGAS向けにカスタマイズされた「cheerio for Google Apps Script」を利用します。

GitHub - tani/cheeriogs: Cheerio/ jQuery for Google Apps Script
Cheerio/ jQuery for Google Apps Script. Contribute to tani/cheeriogs development by creating an account on GitHub.

では、任意のApps Scriptを開き、GASで利用できるようにするためライブラリを追加します。

[

ライブラリの追加を選択して、

スクリプトIDに下のコードを登録してください。

Script ID: 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

ライブラリに「Cheerio」が追加されれば完了です。

コメント

タイトルとURLをコピーしました