Вы можете использовать бесплатный API для получения 50 лучших результатов из конечной точки business_search . Передайте параметр сортировки в строке запроса, чтобы получить самый высокий рейтинг.
Используйте обработчик json, например jsonconverter.bas , для обработки ответа. После установки кода по этой ссылке в стандартный модуль JsonConverter перейдите в раздел VBE> Инструменты> Ссылки> Добавить ссылку на Microsoft Scripting Runtime.
Инструкции API здесь . Вам необходимо настроить тестовое приложение , для которого требуется некоторая базовая информация о пользователе, и подтвердить свою электронную почту. Затем вы получите ключ API для аутентификации , который передается в заголовке авторизации, как показано ниже.
Возвращается другая информация, которую вы можете проанализировать, если хотите.
Option Explicit
Public Sub GetTopRestuarants()
Dim json As Object, headers(), r As Long, c As Long
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://api.yelp.com/v3/businesses/search?term=restuarant&location=san-francisco&limit=50&sort_by=rating", False
.setRequestHeader "Authorization", "Bearer yourAPIkey"
.send
Set json = JsonConverter.ParseJson(.responseText)("businesses")
headers = Array("Restaurant name", "phone", "website", "address")
Dim results(), item As Object
ReDim results(1 To json.Count, 1 To UBound(headers) + 1)
For Each item In json
r = r + 1
results(r, 1) = item("name")
results(r, 2) = item("phone")
results(r, 3) = item("url")
Dim subItem As Variant, address As String
address = vbNullString
For Each subItem In item("location")("display_address")
address = address & Chr$(32) & subItem
Next
results(r, 4) = Trim$(address)
Next
End With
With ActiveSheet
.Cells(1, 1).Resize(1, UBound(headers) + 1) = headers
.Cells(2, 1).Resize(UBound(results, 1), UBound(results, 2)) = results
End With
End Sub
Пример вернул 20 из 50:
Предостережение emptor
Обратите внимание, что указание sort_by - это предложение (не строго соблюдаемое) для поиска Yelp, который рассматривает несколько входных параметров для получения наиболее релевантных результатов. Например, сортировка рейтинга не строго сортируется по значению рейтинга, но по скорректированному значению рейтинга, которое учитывает количество оценок, аналогично байесовскому среднему. Это сделано для того, чтобы предотвратить искажение результатов для предприятий с помощью одного обзора.