使用 Yelp API 检索业务数据
Yelp 公开了一个富 REST API 来执行企业搜索,包含评分、评论和地理搜索(地段、城市、地理编码)。使用 Yelp API,您可搜索一种给定类型的企业(比如 “饭店”)并将搜索限制在一个地理边界内;一个地理坐标附近;或者一个邻居、地址或城市附近。JSON 响应包含了与条件匹配的企业的大量相关信息,包括地址信息、距离、评分、交易,以及其他类型的信息(比如该企业的图片、移动格式信息等)的 URL。
像 LinkedIn 一样,Yelp 使用 OAuth 执行身份验证,所以您必须向 Yelp 注册才能通过该 API 获得一组用于身份验证的凭据。脚本完成身份验证后,可构造一个基于 REST 的 URL 请求。在清单 6 中,我硬编码了一个针对科罗拉多州 Boulder 的饭店请求。响应正文被解析到一个 JSON 对象中并进行迭代,从而发出想要的信息。注意,我排除了已关闭的企业。
清单 6. 使用 Yelp API (yelp.rb) 检索企业数据
#!/usr/bin/ruby
require 'rubygems'
require 'oauth'
require 'json'
consumer_key = 'your consumer key'
consumer_secret = 'your consumer secret'
token = 'your token'
token_secret = 'your token secret'
api_host = 'http://api.yelp.com'
consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {:site => api_host})
access_token = OAuth::AccessToken.new(consumer, token, token_secret)
path = "/v2/search?term=restaurants&location=Boulder,CO"
jresp = JSON.parse(access_token.get(path).body)
jresp['businesses'].each do | business |
if business['is_closed'] == false
printf("%-32s %10s %3d %1.1fn",
business['name'], business['phone'],
business['review_count'], business['rating'])
end
end
清单 7 中的控制台会话显示了运行 清单 6 脚本的示例输出。为了简单一些,我只显示了所返回的前面一组企业,而不是支持该 API 的限制/偏移特性(以执行多个调用来检索整个列表)。这段示例输出显示了企业名称、电话号码、收到的评论数和平均评分。
清单 7. 演示 Yelp API Ruby 脚本
$ ./yelp.rb Frasca Food and Wine 3034426966 189 4.5 John's Restaurant 3034445232 51 4.5 Leaf Vegetarian Restaurant 3034421485 144 4.0 Nepal Cuisine 3035545828 65 4.5 Black Cat Bistro 3034445500 72 4.0 The Mediterranean Restaurant 3034445335 306 4.0 Arugula Bar E Ristorante 3034435100 48 4.0 Ras Kassa's Ethiopia Restaurant 3034472919 101 4.0 L'Atelier 3034427233 58 4.0 Bombay Bistro 3034444721 87 4.0 Brasserie Ten Ten 3039981010 200 4.0 Flagstaff House 3034424640 86 4.5 Pearl Street Mall 3034493774 77 4.0 Gurkhas on the Hill 3034431355 19 4.0 The Kitchen 3035445973 274 4.0 Chez Thuy Restaurant 3034421700 99 3.5 Il Pastaio 3034479572 113 4.5 3 Margaritas 3039981234 11 3.5 Q's Restaurant 3034424880 65 4.0 Julia's Kitchen 8 5.0 $










