Возврат данных о продукте из Amazon Product API с использованием R - PullRequest
0 голосов
/ 26 февраля 2020

Я хотел бы использовать R для извлечения информации о продукте из Amazon Product API . Как подсказывает этот поток и Помощник по подписанным запросам Amazon , я использую следующий код R:

library("RCurl")

nvp <- list("Service"="AWSECommerceService",
            "Version"="2011-08-01",
            "AssociateTag"="PutYourAssociateTagHere",
            "Operation"="ItemSearch",
            "SearchIndex"="Books",
            "Keywords"="harry+potter",
            "Timestamp"="2020-02-26T11:25:14.000Z",
            "AWSAccessKeyId"="XXX")                    # "XXX" needs to be replaced by the Access Key

getURL(nvp)

# AWSECommerceService               2011-08-01  PutYourAssociateTagHere               ItemSearch                    Books             harry+potter 2020-02-26T11:25:14.000Z                      XXX 
#                  ""                       ""                       ""                       ""                       ""                       ""                       ""                       "" 

Как видите, функция getURL просто возвращаю пустые символы. После нескольких часов поиска я все еще не могу получить какой-либо другой вывод, независимо от того, как я изменяю параметры предыдущего кода.

Как я могу изменить предыдущий код, чтобы он возвращал данные продукта из API продукта Amazon?

1 Ответ

1 голос
/ 26 февраля 2020

Если посмотреть на предоставленный вами помощник по подписанным запросам , пример URL выглядит следующим образом:

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Version=2011-08-01&AssociateTag=PutYourAssociateTagHere&Operation=ItemSearch&SearchIndex=Books&Keywords=harry+potter

Поэтому необходимо внести некоторые изменения в список nvp, который вы предоставили выше. Эти изменения: 1. Поместите каждый параметр в строку (например, «Версия = 2011-08-01» вместо «Версия» = «2011-08-01». 2. Убедитесь, что форматирование соответствует (например, в примере URL, Version предшествует &, поэтому мы уверены, что это добавлено. 3. Наконец, нам нужен базовый URL, чтобы вставить его (это все в примере URL до Service).

nvp = c("Service=AWSECommerceService",
       "&Version=2011-08-01",
       "&AssociateTag=PutYourAssociateTagHere",
       "&Operation=ItemSearch",
       "&SearchIndex=Books",
       "&Keywords=harry+potter",
      "&Timestamp=2020-02-26T11:25:14.000Z",
      "&AWSAccessKeyId = XXX")
base_url = "http://ecs.amazonaws.com/onca/xml?"

Затем нам нужно вставить вместе base_url и nvp, чтобы сделать наш URL

amazon_url = paste0(base_url, paste(nvp, collapse=''))

Это дает URL, который мы можем передать getURL. Если вы передадите ассоциированный тег / AWS Идентификатор ключа доступа, это должно сработать, я в настоящее время получить «должен содержать AWS ошибка идентификатора ключа доступа».

[Это очевидно очень ручной подход, если вы хотите быть более прогаматированными c в поиске, вы можете сделать:

AWSAccessKeyID = '1234'
keywords = 'harry+potter'

Затем их можно передать в пасту с незначительными изменениями

nvp = list("Service=AWSECommerceService",
               "&Version=2011-08-01",
               "&AssociateTag=PutYourAssociateTagHere",
               "&Operation=ItemSearch",
               "&SearchIndex=Books",
               "&Keywords=", keywords,
               "&Timestamp=2020-02-26T11:25:14.000Z",
               "&AWSAccessKeyId=" AWSAccessKeyID 
                )
amazon_url = paste0(base_url, paste(nvp, collapse=''))

]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...