我想通过Yelp API检索纽约诊所的评论。但是,API似乎只返回前三个评论。
我的代码
# Finding reviews for a particular clinic
import http.client
import json
import urllib.parse
api_key= 'MY API KEY'
API_HOST = 'https://api.yelp.com/reviews'
SEARCH_PATH = '/v3/businesses/search'
BUSINESS_PATH = '/v3/businesses/'
# Business ID will come after slash.
headers = {
'Authorization': 'Bearer %s' % api_key,
}
#need the following parameters (type dict)
params = {'name':'MinuteClinic', 'address1':'241 West 57th St', 'city':'New York', 'state':'NY', 'country':'US'}
param_string = urllib.parse.urlencode(params)
conn = http.client.HTTPSConnection("api.yelp.com")
conn.request("GET", "/v3/businesses/matches/best?"+param_string, headers=headers)
res = conn.getresponse()
data = res.read()
data = json.loads(data.decode("utf-8"))
print(data)
b_id = data['businesses'][0]['id']
r_url = "/v3/businesses/" + b_id + "/reviews" #review request URL creation based on business ID
conn.request("GET",r_url,headers=headers)
rev_res = conn.getresponse() #response and read functions needed else error(?)
rev_data = rev_res.read()
yelp_reviews = json.loads(rev_data.decode("utf-8"))
print(yelp_reviews)
print(len(yelp_reviews))
有没有办法获得所有评论?非常感谢。
答案 0 :(得分:1)
正如您在Yelp API documentation上看到的那样,目前无法使用您正在使用的商家评价端点(/businesses/{id}/reviews
)检索单个商家的三个以上评论。
商业评论端点唯一可接受的参数是locale
。
此外,该端点文档的第一句是
此端点最多可返回由Yelp's default sort order订购的特定商家的三个评论摘录。
所以,在这个时候,似乎Yelp只通过他们的API公开每个企业最多三次评论。请考虑向GitHub repository for the Yelp API提交功能请求。
答案 1 :(得分:0)
我讨厌Yelp,也讨厌Google遵循套件并限制返回的评论数量。这些评论是公开的,但它们不愿让程序访问所有评论,这是有智障的。他们想知道为什么开发人员必须创建替代方法来绕过这些限制。
任何人;我为其中一个API创建了一个临时API密钥;这将从任何Yelp个人资料中获取您需要的所有评论;
示例调用:
参数:
url-您需要获得评论的yelp业务页面的完整URL(必填) api_key-使用上面的链接中的一个,我将其设置为过期(请记住) 评分-您可以指定&rating = 5仅获得5星评价,或指定&rating = 2仅获得2星评价,等等;这是可选的,将其保留为空白将返回所有评论
继续,拿起诊所的东西:)
答案 2 :(得分:0)
Yelp 的 Fusion API 允许用户针对一个关键字搜索多达 1000 个商家信息,但在评论方面 Yelp 并不那么慷慨。
剩下的唯一选择是让您抓取 Yelp。虽然这会违反他们的 robots.txt
和他们的 TOS,因为他们声称拥有他们网站上所有用户生成评论的版权。
幸运的是,从 Yelp 上抓取评论并不违法。由于它们是可公开访问的,并且发布它们的用户并不打算将它们保密。
以下技术可用于从 Yelp 中抓取评论:
还有更多,但以上内容对于 Yelp 来说应该足够了。另一方面,如果您没有时间,并且只想开始。我构建了一个名为 Unwrangle 的 Reviews API,可用于从 Yelp 中抓取评论。
您可以在注册时免费获取 10,000 条评论。 API 需要每个 Yelp 列表 1 个发布请求,它提取所有评论(我已经测试了多达 12k 条 Yelp 评论)并将它们发布到您的 webhook。也可以在作业完成后查询它们。 Here's 文档链接。