csv - 如何按餐厅评级对餐厅名称列表进行排序(可能来自 Google Places 或 Yelp Fusion API)
问题描述
我有一个包含数千个餐厅名称和地址的 csv 文件,我需要按评级(不在 csv 中的数据)对其进行排序。有没有办法用这些数据填充 csv?可能使用 Google Places API 或 Yelp Fusion API?
解决方案
如果您使用商家名称和地址进行查询,Google Places API 和 Yelp Fusion API 都可以让您获得餐厅的评级。我将解释如何做到这一点,但首先要注意合规性。您所描述的内容显然违反了这两个 API 的服务条款。唯一允许使用他们的数据是在公开的网站或应用程序上显示它。将其获取并保留在 csv 文件中显然是不合适的。这些 API 旨在为您的用户实时查询和立即显示结果。
Google 要求地方数据与 Google 地图或经批准的“由 Google 提供支持”的图像一起显示。此外,不允许“预取、缓存或存储内容”。有关详细信息,请参阅https://developers.google.com/places/web-service/policies
Yelp 需要署名,基本上要求您显示星级和 Yelp 徽标,并带有指向您查询的餐厅的 Yelp 业务页面的链接。请参阅https://www.yelp.com/developers/display_requirements此外,您不能“缓存、记录、预取或以其他方式存储 Yelp 内容的任何部分超过二十四 (24) 小时从收到 Yelp 内容开始,或尝试或提供一种方法来执行任何抓取或“批量下载”操作。” 有关全文和术语,请参阅https://www.yelp.com/developers/api_terms
在不涉及法律术语的情况下,以下是向 Google 地方信息请求餐厅评级的方法:
https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Applebees,234 W 42nd St,New York,NY&inputtype=textquery&fields=formatted_address,name,rating&key=YOUR_API_KEY
并且,JSON 响应:
{
"candidates": [
{
"formatted_address": "234 W 42nd St, New York, NY 10036, USA",
"name": "Applebee's Grill + Bar",
"rating": 3.6
}
],
"status": "OK"
}
这是对 Yelp Fusion 的相同要求。没有办法只要求评级。结果始终包含餐厅数据库中的所有内容:
https://api.yelp.com/v3/businesses/search?term=applebees&location=234 W 42nd St,New York,NY&limit=1
JSON响应:
{
"businesses": [
{
"id": "gytFjzBw-z5LZD-6JSMChg",
"alias": "applebees-grill-bar-new-york-3",
"name": "Applebee's Grill + Bar",
"image_url": "https://s3-media1.fl.yelpcdn.com/bphoto/CLizyj9S7pMvwGNm2dgdiQ/o.jpg",
"is_closed": false,
"url": "https://www.yelp.com/biz/applebees-grill-bar-new-york-3?adjust_creative=pnOv3Zj2REsNDMU4Z3-SLg&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=pnOv3Zj2REsNDMU4Z3-SLg",
"review_count": 444,
"categories": [
{
"alias": "tradamerican",
"title": "American (Traditional)"
},
{
"alias": "burgers",
"title": "Burgers"
},
{
"alias": "sportsbars",
"title": "Sports Bars"
}
],
"rating": 2,
"coordinates": {
"latitude": 40.756442,
"longitude": -73.988838
},
"transactions": [
"delivery",
"pickup"
],
"price": "$$",
"location": {
"address1": "234 W 42nd St",
"address2": "",
"address3": "",
"city": "New York",
"zip_code": "10036",
"country": "US",
"state": "NY",
"display_address": [
"234 W 42nd St",
"New York, NY 10036"
]
},
"phone": "+12123917414",
"display_phone": "(212) 391-7414",
"distance": 5.938732504864397
}
],
"total": 2900,
"region": {
"center": {
"longitude": -73.98880004882812,
"latitude": 40.75648701137637
}
}
}
推荐阅读
- java - quickfixj 与 IntelliJ - 与(maven 错误)冲突而省略
- amazon-s3 - 从 Hive 写入 s3 失败
- c++ - 将双精度转换为字符数组 C++
- c++ - 在在线 ide 中获取 RE(SIGSEGV)
- php - 如何从 curl 请求中获取格式化的 json?
- javascript - Javascript 交换对象元素
- javascript - 使用 discord.js 检测图像并响应
- swift - Swift:让自定义进度视图跟随用户点击?贝塞尔
- javascript - 动态下拉列表没有结果
- java - 在 MacOS High Sierra 上设置 Hadoop 单节点时遇到问题