我的脚本只获取了几个内容

时间:2018-08-17 22:08:12

标签: python json python-3.x api web-scraping

我编写了一个脚本,使用其api从yelp获取所有评论,评论者姓名和评分。我的以下脚本可以从该api生成三个评论,评论者名称和评分。但是,我可以在该着陆页上看到44条此类评论,在那里我通过使用chrome dev工具收集了他们的api。我如何才能得到所有这些?

link to the landing page

这是我的尝试:

import requests

res = requests.get("https://eatstreet.com/api/v2/restaurants/40225?yelp_site=")
name = res.json()['name']
for texualreviews in res.json()['yelpReviews']:
    reviewtext = texualreviews['message']
    revname = texualreviews['reviewerName']
    rating = texualreviews['rating']
    print(f'{name}\n{reviewtext}\n{revname}\n{rating}\n')

正如我之前所说:我的上述脚本可以产生三个评论,而其中有44个。我怎么能抓住它们?

这些评论的屏幕快照(可在该登录页面中找到它们的位置)。 enter image description here

1 个答案:

答案 0 :(得分:0)

Yelp自己的API不允许查询3条以上的评论;无论出于何种原因,它们都会限制您可以获取的评论数量(以相同的方式,Google将其API限制为仅显示5条评论)。如果要抓取,请直接抓取Yelp页面。您所访问的网站正在使用API​​来显示3条评论(最多),并直接返回该位置Yelp网站(其中显示了所有评论);遗憾的是,没有原生方法可以从Yelp中提取所有评论;

您从Chrome(https://eatstreet.com/api/v2/restaurants/40225?yelp_site=)的Google开发人员工具检查器中查询到的API URL正在调用Fusion(Yelp的API)以将yelpReviews数组拉入JSON;默认情况下限制为3,即使您要注册自己的Fusion应用,您最多也不能提取3条评论,这是Yelp设置的硬性上限。

尽管如此,您仍然可以在其中搜索一些临时脚本,我已经看到很多人试图创建库来提取API受限的评论数据。一个很好的例子是我在这里写的:https://github.com/ilanpatao/Yelp-Reviews-API

最好, 宜兰