Использование Yelp API с R, попытка поиска типов бизнеса с использованием геокоординат

Пытаюсь подключиться к yelp API с помощью R и библиотеки ROAuth.

Отличный пример Python с использованием модуля rauth и геокоординат:

https://gist.github.com/phillipjohnson/8889618

и хотел бы сделать именно это, но в R и с использованием такой библиотеки, как ROAuth.

Я пытался создать рукопожатия и т.д.:

credentials <- OAuthFactory$new(consumerKey=consumerKey,
                                consumerSecret=consumerSecret,
                                oauthKey = token,
                                oauthSecret = token_secret,
                                authURL="http://api.yelp.com/v2")
credentials$handshake()
credentials$OAuthRequest(testURL, "GET")

Но не пройти мимо рукопожатия. Yelp использует OAuth 1.0, который поддерживает пакет ROAuth. Из другого кода, который я видел, требуются «oauth_consumer_key», «oauth_nonce», «oauth_signature_method», «oauth_timestamp», «oauth_token». Я был бы признателен за любые советы от людей, которые использовали R для запроса Yelp, используя геокоординаты. Спасибо!


person amunategui    schedule 01.01.2015    source источник
comment
Методы и ответы Yelp API для поискового и бизнес-API. Если вы используете поисковый API, я думаю, он должен быть таким: authURL=api.yelp.com/v2/search   -  person Jarachanthan Ratnakumar    schedule 02.01.2015
comment
Спасибо за предложение - связался с автором, который порекомендовал использовать httr вместо ROAuth.   -  person amunategui    schedule 05.01.2015


Ответы (1)


После того, как автор ROAuth порекомендовал использовать библиотеку (httr) и из-за отсутствия простых примеров визга в R с использованием любой из библиотек, я подумал, что другие тоже могут искать это. Это вернет либо 10 баров в районе Чикаго по названию, либо 10 баров в Сан-Франциско по геокоординатам. Замените крестики ключами вашей учетной записи yelp. (это собрано из многих источников - спасибо им всем).

# yelp
consumerKey = "xxxx"
consumerSecret = "xxxx"
token = "xxxx"
token_secret = "xxxx"

require(httr)
require(httpuv)
require(jsonlite)
# authorization
myapp = oauth_app("YELP", key=consumerKey, secret=consumerSecret)
sig=sign_oauth1.0(myapp, token=token,token_secret=token_secret)

limit <- 10

# 10 bars in Chicago
yelpurl <- paste0("http://api.yelp.com/v2/search/?limit=",limit,"&location=Chicago%20IL&term=bar")
# or 10 bars by geo-coordinates
yelpurl <- paste0("http://api.yelp.com/v2/search/?limit=",limit,"&ll=37.788022,-122.399797&term=bar")

locationdata=GET(yelpurl, sig)
locationdataContent = content(locationdata)
locationdataList=jsonlite::fromJSON(toJSON(locationdataContent))
head(data.frame(locationdataList))
person amunategui    schedule 06.01.2015
comment
amunategui -- как бы вы экспортировали данные в текстовый файл? - person davids12; 05.02.2015
comment
yelpResults = tryCatch({ data.frame(locationdataList)}, error = function(e) { NULL }) if (!is.null(yelpResults)) { set1 ‹- data.frame(name=yelpResults$businesses.name, ' rating'=yelpResults$businesses.rating) }; write.csv(set1,'yelpdata.csv') - person amunategui; 06.02.2015
comment
попробуйте приведенный выше код. Используйте tryCatch, чтобы убедиться, что вы получили данные. В приведенном выше примере я вытащил только business.name и рейтинг. - person amunategui; 06.02.2015
comment
Похоже, может быть синтаксическая ошибка -- Ошибка: неожиданное 'if' в yelpResults = tryCatch({ data.frame(locationdataList) }, error = function(e) { NULL }) if - person davids12; 06.02.2015
comment
поместите if в новую строку... я должен был поставить перед этим точку с запятой, но новая строка будет работать... - person amunategui; 06.02.2015
comment
Ах, это работает. Однако кадр данных yelpResults — это именно то, что я хотел бы экспортировать как есть. Заранее извиняюсь, но я немного смущен тем, как просто экспортировать фрейм данных yelpResults в этом примере. - person davids12; 06.02.2015
comment
Похоже на какую-то проблему с несколькими вложенными полями в выводе JSON. - person davids12; 07.02.2015
comment
Это может быть больше, чем вы ищете, но это полное пошаговое руководство от Yelp: amunategui.github.io/yelp-cross-country-trip - person amunategui; 08.02.2015
comment
как я могу получить фрейм данных с 32 переменными из locationdataList? - person aruizga; 06.04.2015
comment
@amunategui Я считаю, что поиск с использованием специальных символов проблематичен. Например, a&w restaurants возвращает ошибку. Есть ли центральное место, где вы можете увидеть, как успешно кодировать эти символы? Консоль Yelp API не поможет. - person Pierre L; 03.02.2016