F.Ko-Jiの「一秒後は未来」

梅酒が飲める飲食店データベースをAPIを使って構築する方法

umeshu-photo.jpg

梅酒.inに掲載している飲食店情報は、「梅酒が飲めるであろう飲食店」に限定していて、さらに「その梅酒で飲める梅酒」の情報もあわせて掲載しているのですが、このあたりの仕組みについてブログに書いてなかった気がするので、今更ながら解説しておこうかと思います。

まず、梅酒.inに掲載しているお店の情報自体はぐるなびのAPIホットペッパーのAPIを利用しているのですが、これらのAPIではお店で食べられるメニュー自体の情報までは取得することができません。

梅酒好きであれば「あの梅酒が飲めるお店に行きたい」と思うわけで、その場合どうするかというと「梅酒の銘柄名」で検索します。ということは、Yahoo!の検索APIを使ってやればうまくいくのではないか、と考えました。

つまり梅酒の銘柄名を検索キーワードにしてYahoo!検索APIをリクエストするわけですが、その際にぐるなびとホットペッパーのドメインに限定して検索結果を取得するようにします。たとえば、

文蔵梅酒 site:r.gnavi.co.jp

のようなクエリーで検索するわけです。(ちなみにAPIでは query パラメータにキーワードを設定して、 site パラメータにドメインを指定します。)

こうすれば「ぐるなびの店舗ページのうち文蔵梅酒と記載されているページ」が検索結果として取得できます。(ほぼ食事メニューのページが出てきます。)

検索結果のURLには飲食店のショップIDが含まれているので、そのショップIDを梅酒.inの銘柄IDと関連付けてデータベースに保存しておきます。これで「ある銘柄の梅酒が飲めるであろう飲食店」の情報を持つことができます。

この方法を使って、すべての銘柄でぐるなびとホットペッパーのショップIDを取得してデータベースに保存していけば、最終的に梅酒が飲めるお店に限定して飲食店を検索できるデータベースが完成します。

あとは、それらのお店のページを表示する際に、ぐるなびやホットペッパーのAPIをリクエストして飲食店情報を取得し、データベースに保存しておいた梅酒情報とあわせて表示すれば完了、となります。

もちろんこの方法は100%正確とはいきませんが、あるAPIでは取得できない情報を補えるという意味で、けっこう使えるテクニックではないかと思います。

  1. たかやま より:

    立川の知り合いのお店でも梅酒を扱っていて、ぐるなびに登録されていますが、梅酒.inで検索してもでてきません。なぜでしょう?
    http://r.gnavi.co.jp/e510200/menu5.htm

  2. F.Ko-Ji より:

    > たかやまさま
    コメントありがとうございます。

    記事に書いてあるようにYahoo!検索を利用しており、
    該当のページ http://r.gnavi.co.jp/e510200/menu5.htm
    Yahoo!検索にインデックスされていないことが原因だと思います。

    こういう場合もあることを考えると、
    梅酒.inにお店を登録できるような仕組みを
    用意したほうがいいかもしれませんね。

  3. たかやま より:

    なるほど、そうでしたか。なんでインデックスされてないのでしょうね?
    Googleだとインデックスされているようなのですが、Googleは使われる予定はありませんか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など