ぐるなびapiを使って肝心なことがわからないままです。
それは、例えば茨城県にある店舗を全て取得するにはどうすればいいですか?
リクエストパラメータに
PHP
1$pref='PREF◯◯◯'
と書けば茨城県の店舗情報が入り、
PHP
1hit_per_page=20
と書けば20店舗の店舗情報が手に入るのはわかります。
しかし、茨城県に何店舗あるのかわからないのでどう書けばいいかわかりません。
ちなみにデフォルトだと10店舗しか手に入りません。
※実は、レスポンスのtotal_hit_count、hit_per_page、page_offsetの出力の仕方がわからないんです。
xmlを使っており、レスポンスパラメータの書き方は、
$xml = simplexml_load_file( $url );
if(!$xml->rest){
echo '見つかりませんでした';
} else {
foreach($xml->rest as $key){
というやり方で出力しています
※みなさん、ご回答ありがとうございます。
質問に逸れた質問をしてしまい大変すみません。
ですが、それでもご回答してくれてありがとうございます。
わからなかった問題がまた一つわかりました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
hit_per_pageは一度のリクエストでどれだけの店舗数を取得するかを設定します。
あとはレスポンスのpage_offsetとリクエストのoffset_pageを、使って少しずつ情報を取得する必要がありそうです。
hit_per_pageにAPIが許容する最大値を設定すれば、やりとりの回数は減らせそうですね。
投稿2016/06/27 08:41
総合スコア18155
0
ベストアンサー
そもそもの話、こういったAPIはデータを根こそぎ取得するような使い方を想定していません。
Google検索で「日本」と検索すると約 952,000,000 件のページがHITするそうですが
そのすべてを取得したいといった要望はまれでしょうし、要求されてもデータ量が膨大で非常にリソースを消費してしまいます。
「茨城県」の店舗すべてはそれこそ膨大な数でしょうから、一気にすべてを得ようという処理は非現実的ですし、API側も拒否すると思います。
尚、皆さんおっしゃっている「繰り返し取得」というのは
例えば条件なしで実行すると557094件あるようですが、これをすべて取得したいというなら、下の例のように1回20件取得するコールをoffsetをずらしながら27855件送って結果を合体させればできるということだと思います。
ただこんな膨大なリクエストを短期間に実行すると迷惑アクセスと認識されるのではないかと思います。
offset=1&hit_per_page=20 //1-20の店舗情報を取得 offset=21&hit_per_page=20 //21-40の店舗情報を取得 offset=41&hit_per_page=20 //41-60の店舗情報を取得 ・・・・・・ offset=557080&hit_per_page=20 //557080-557094の店舗情報を取得
1001件~1020件のデータがほしいなら「offset=1001&hit_per_page=20」とすればいいのであって、1020件分のデータを取得する必要はありません。
投稿2016/06/27 09:51
編集2016/06/27 09:54総合スコア2068
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/27 12:07 編集
2016/06/28 07:01
2016/06/28 07:22
2016/06/28 07:30 編集
2016/06/28 07:49
2016/06/28 07:50
2016/06/28 08:01
2016/06/28 08:19 編集
2016/06/28 08:58
2016/06/29 16:05
2016/06/29 22:40
2016/06/30 02:16
2016/06/30 02:17
2016/06/30 03:13
2016/06/30 06:13
0
アプリケーションの仕様が分かりませんが、情報を入手し、それをDBに貯め、ユーザのリクエスト毎にDB検索結果を表示しようとしていませんか?
そうでない場合は、上限を決めないでAPIを叩く必要はなく、リクエスト毎にAPIを叩く方針になると思います。
その場合、利用ルールに抵触する可能性が高いです。
もしDBに貯めこむ設計にしているのであれば、設計を見なおされてはいかがですか?
投稿2016/06/27 12:20
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/28 07:05
退会済みユーザー
2016/06/28 08:20
0
http://api.gnavi.co.jp/api/manual/restsearch/ に書かれています。
レスポンスに
total_hit_count 該当件数
hit_per_page 表示件数
page_offset 表示ページ
が、あります。
一回目の検索で、表示件数と検索条件に該当した件数が分かりますので、あとは、検索条件と検索開始位置を指定して、検索を繰り返せば、全件取得できると思います。
投稿2016/06/27 08:45
総合スコア25171
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
total_hit_count で、全部で何件あったのか分かります。
普通は、例えば1万件もあった場合全部来られてもこまりますから、
10件だけ表示して、次のページ分を取得したいとなったら、
offsetで11件目と指定して、また10件取得を total_hit_countを超えないまで、
好きなだけ繰り返すわけです。
投稿2016/06/27 08:40
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/27 09:11
2016/06/27 09:13
2016/06/29 13:09
退会済みユーザー
2016/06/30 00:42
2016/06/30 07:49
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/27 09:17
2016/06/27 09:28
2016/06/27 09:48
2016/06/27 10:00
2016/06/27 10:39
2016/06/27 10:42
2016/06/27 10:53
2016/06/28 06:55
2016/06/29 13:09
2016/06/29 13:45
2016/06/29 14:22
2016/06/29 14:22
2016/06/29 14:36
2016/06/29 14:44
2016/06/29 14:46
2016/06/29 14:49
2016/06/29 14:50
2016/06/29 14:50
2016/06/29 14:52 編集
2016/06/29 14:52
2016/06/29 14:52
2016/06/29 15:04 編集
2016/06/29 15:17
2016/06/29 15:41
2016/06/29 15:45
2016/06/30 05:59