梅酒が飲める飲食店データベースをAPIを使って構築する方法
梅酒.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では取得できない情報を補えるという意味で、けっこう使えるテクニックではないかと思います。
立川の知り合いのお店でも梅酒を扱っていて、ぐるなびに登録されていますが、梅酒.inで検索してもでてきません。なぜでしょう?
http://r.gnavi.co.jp/e510200/menu5.htm
> たかやまさま
コメントありがとうございます。
記事に書いてあるようにYahoo!検索を利用しており、
該当のページ http://r.gnavi.co.jp/e510200/menu5.htm が
Yahoo!検索にインデックスされていないことが原因だと思います。
こういう場合もあることを考えると、
梅酒.inにお店を登録できるような仕組みを
用意したほうがいいかもしれませんね。
なるほど、そうでしたか。なんでインデックスされてないのでしょうね?
Googleだとインデックスされているようなのですが、Googleは使われる予定はありませんか?