質問編集履歴
2
別の店の名前などをコンソール上で出力できるようになったのでどうやったか追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
def search
|
34
34
|
|
35
|
-
key = "
|
35
|
+
key = "自分のAPIKey"
|
36
36
|
|
37
37
|
lat = '35.658'
|
38
38
|
|
@@ -64,11 +64,117 @@
|
|
64
64
|
|
65
65
|
```
|
66
66
|
|
67
|
+
|
68
|
+
|
67
69
|
上のコードのブラウザ結果
|
68
70
|
|
69
71
|
![イメージ説明](4dd8da186d5ea238e5edf2fe91a8fd2e.png)
|
70
72
|
|
71
73
|
|
74
|
+
|
75
|
+
# 別でrubyファイルを用意して実行してみた
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
|
79
|
+
require 'net/http'
|
80
|
+
|
81
|
+
require 'json'
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
# 初期設定
|
86
|
+
|
87
|
+
KEYID = "自分のAPIkey"
|
88
|
+
|
89
|
+
COUNT = 100
|
90
|
+
|
91
|
+
LAT = "35.658"
|
92
|
+
|
93
|
+
LNG = "139.7016"
|
94
|
+
|
95
|
+
FORMAT = "json"
|
96
|
+
|
97
|
+
PARAMS = {"key": KEYID, "count":COUNT, "lat":LAT, "lng":LNG,"format":FORMAT}
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
def write_data_to_csv(params)
|
102
|
+
|
103
|
+
restaurants = [["名称","営業日","住所","アクセス","画像"]]
|
104
|
+
|
105
|
+
uri = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/")
|
106
|
+
|
107
|
+
uri.query = URI.encode_www_form(PARAMS)
|
108
|
+
|
109
|
+
json_res = Net::HTTP.get uri
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
response = JSON.load(json_res)
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
if response == nil or response["results"].has_key?("error") then
|
118
|
+
|
119
|
+
puts "エラーが発生しました!"
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
for restaurant in response["results"]["shop"] do
|
124
|
+
|
125
|
+
rest_info = [restaurant["name"], restaurant["open"], restaurant["address"], restaurant["access"], restaurant["photo"]]
|
126
|
+
|
127
|
+
puts rest_info
|
128
|
+
|
129
|
+
restaurants.append(rest_info)
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
File.open("restaurants_list.csv", "w") do |file|
|
136
|
+
|
137
|
+
file << restaurants
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
return puts restaurants
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
write_data_to_csv(PARAMS)
|
148
|
+
|
149
|
+
```
|
150
|
+
|
151
|
+
実行結果
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
|
155
|
+
ディプント Di PUNTO 渋谷駅前店
|
156
|
+
|
157
|
+
月~日、祝日、祝前日: 16:00~翌5:00 (料理L.O. 翌4:00 ドリンクL.O. 翌4:00)
|
158
|
+
|
159
|
+
東京都渋谷区渋谷1-24-16 みずほ銀行遠州屋共同ビルB1F
|
160
|
+
|
161
|
+
渋谷駅前 徒歩1分
|
162
|
+
|
163
|
+
{"mobile"=>{"l"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_100.jpg"}, "pc"=>{"l"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_238.jpg", "m"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_58_s.jpg"}}
|
164
|
+
|
165
|
+
鳥貴族 渋谷西口店
|
166
|
+
|
167
|
+
月~日、祝日、祝前日: 17:00~翌5:00 (料理L.O. 翌4:30 ドリンクL.O. 翌4:30)
|
168
|
+
|
169
|
+
東京都渋谷区道玄坂1-7-1 第一渋観ビル 5F
|
170
|
+
|
171
|
+
JR渋谷駅西口より 徒歩3分/井の頭線渋谷駅 中央口より 徒歩1分
|
172
|
+
|
173
|
+
{"mobile"=>{"l"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_100.jpg"}, "pc"=>{"l"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_238.jpg", "m"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_58_s.jpg"}}
|
174
|
+
|
175
|
+
.....
|
176
|
+
|
177
|
+
```
|
72
178
|
|
73
179
|
# 調べたこと
|
74
180
|
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,41 +14,59 @@
|
|
14
14
|
|
15
15
|
1.Geolocation APIを使って現在地の取得をconsole.logで確認することができた。
|
16
16
|
|
17
|
-
2.
|
17
|
+
2.コントローラーで記述したところJson形式でお店の情報を拾うことができた
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
app/controllers/homes_controller.rb
|
18
22
|
|
19
23
|
```ruby
|
20
24
|
|
21
|
-
re
|
25
|
+
class HomesController < ApplicationController
|
22
26
|
|
23
|
-
require '
|
27
|
+
require 'net/http'
|
24
28
|
|
25
|
-
require '
|
29
|
+
require 'uri'
|
26
30
|
|
27
|
-
|
31
|
+
require 'json'
|
28
32
|
|
29
|
-
|
33
|
+
def search
|
30
34
|
|
31
|
-
|
35
|
+
key = "64c59eed4873e844"
|
32
36
|
|
33
|
-
l
|
37
|
+
lat = '35.658'
|
34
38
|
|
35
|
-
|
39
|
+
lng = '139.7016'
|
36
40
|
|
37
|
-
|
41
|
+
range = 1
|
38
42
|
|
39
|
-
|
43
|
+
api = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=#{key}&lat=#{lat}&lng=#{lng}&range=#{range}&order=1&format=json")
|
40
44
|
|
41
|
-
|
45
|
+
json = Net::HTTP.get(api)
|
42
46
|
|
43
|
-
|
47
|
+
@result = JSON.parse(json)
|
48
|
+
|
49
|
+
end
|
44
50
|
|
45
51
|
end
|
46
52
|
|
53
|
+
|
54
|
+
|
47
55
|
```
|
48
56
|
|
49
|
-
上のコードの実行結果
|
50
57
|
|
58
|
+
|
59
|
+
views/homes/search.html.erb
|
60
|
+
|
61
|
+
```erb
|
62
|
+
|
63
|
+
<%= @result %>
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
上のコードのブラウザ結果
|
68
|
+
|
51
|
-
![
|
69
|
+
![イメージ説明](4dd8da186d5ea238e5edf2fe91a8fd2e.png)
|
52
70
|
|
53
71
|
|
54
72
|
|
@@ -61,3 +79,13 @@
|
|
61
79
|
> Railsで座標情報を受け取ってHotPepperのWebAPIにリクエストするのかと思いますが、
|
62
80
|
|
63
81
|
rubyで外部へHTTPリクエストをするGemは有名どころだとHTTPartyやFaradayがあります。
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
調べましたが、これがあまり良くわからなかったです。
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
# まとめ
|
90
|
+
|
91
|
+
Jsonでビューまで表示はできたが、実際に店舗名称 、アクセス 、サムネイル画像を表示させたいです。
|