【问题标题】:setting query params to API with getURL in RCurl使用 RCurl 中的 getURL 将查询参数设置为 API
【发布时间】:2015-08-02 04:54:59
【问题描述】:

我正在尝试将 R 与 Hotwire Hotels API 一起使用: 以下是原始请求:

getURL(http://api.hotwire.com/v1/deal/hotel?dest=chicago&apikey=##############&format=JSON&limit=50&startdate=08/27/2015&enddate=08/28/2015)

但是,当我尝试将“startdateand ‘enddate”作为参数传递时(见下文),它似乎没有选择日期。

getURL ("http://api.hotwire.com/v1/deal/hotel?dest=chicago&apikey=##############&format=JSON&limit=50",     
 httpheader=list(startdate=c_in,enddate=c_out))

不胜感激。

苏布拉

【问题讨论】:

  • c_inc_out 是什么?它们是在您的全局环境中定义的变量吗?
  • 您不能只使用paste0() 来构建调用getURL() 的URL,日期基于c_inc_out,例如getURL(paste0("http://api.hotwire.com/v1/deal/hotel?dest=chicago&apikey=##############&format=JSON&limit=50&startdate=", c_in, "&enddate=", c_out))

标签: r web-scraping rcurl


【解决方案1】:

您真的应该尝试切换到httr,因为它使所有网络调用更加清晰(API 文档说日期参数位于查询部分):

library(httr)

c_in <- '08/02/2015'
c_out <- '08/05/2015'

hotwire_api_url <- "http://api.hotwire.com/v1/deal/hotel"

res <- GET(hotwire_api_url,
           query=list(dest="chicago",
                      apikey="########",
                      format="JSON",
                      limit=50,
                      startdate=c_in,
                      enddate=c_out))

# since return val is "text/x-json"

recs <- jsonlite::fromJSON(content(res, as="text"))

head(recs$Result)
##                   FoundDate CurrencyCode NightDuration    EndDate
## 1 2015-08-01T23:38:48-07:00          USD           3.0 08/05/2015
## 2 2015-08-01T23:38:04-07:00          USD           3.0 08/05/2015
## 3 2015-08-01T23:38:47-07:00          USD           3.0 08/05/2015
## 4 2015-08-01T23:38:48-07:00          USD           3.0 08/05/2015
## 5 2015-08-01T23:38:36-07:00          USD           3.0 08/05/2015
## 6 2015-08-01T23:38:18-07:00          USD           3.0 08/05/2015
##                                 Headline IsWeekendStay Price  StartDate
## 1    Naperville 5 Star Hotel, $143/night         false 143.0 08/02/2015
## 2     Northbrook 4 Star Hotel, $67/night         false  67.0 08/02/2015
## 3     Chicago 4.5 Star Hotel, $208/night         false 208.0 08/02/2015
## 4 Schiller Park 4 Star Hotel, $140/night         false 140.0 08/02/2015
## 5     Chicago 4.5 Star Hotel, $142/night         false 142.0 08/02/2015
## 6     Naperville 4 Star Hotel, $98/night         false  98.0 08/02/2015
##                                                                                                                                                                                                                 Url
## 1     http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjE4NTAzOjE0MDUwOjUuMDoxNDMuMDpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 2         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjM1MTEwOjg3NTQ3OjQuMDo2Ny4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 3 http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjQ4Njk6ODc1NDU6NC41OjIwOC4wMDAwMjpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 4     http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjM1MTI3Ojg5ODg5OjQuMDoxNDAuMDpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 5         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjQ4Njk6ODc5NTE6NC41OjE0Mi4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 6         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjE4NTAzOjE0MDUwOjQuMDo5OC4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
##            City CountryCode NeighborhoodLatitude NeighborhoodLongitude
## 1    Naperville          US              41.8008              -88.1328
## 2    Northbrook          US              42.1138              -87.8601
## 3       Chicago          US              41.8989              -87.6243
## 4 Schiller Park          US              41.9334              -87.9029
## 5       Chicago          US              41.8549              -87.6221
## 6    Naperville          US              41.8008              -88.1328
##                                   Neighborhood StarRating StateCode
## 1                           Lisle - Naperville        5.0        IL
## 2         Northbrook - Glenview - Mt. Prospect        4.0        IL
## 3         Magnificent Mile North - Water Tower        4.5        IL
## 4                O'Hare Intl Airport ORD South        4.0        IL
## 5 McCormick Place - South Loop - Soldier Field        4.5        IL
## 6                           Lisle - Naperville        4.0        IL

【讨论】:

    【解决方案2】:

    httpheader 参数用于传递标头,而不是查询参数

    使用RCurl::getForm

    getForm("http://httpbin.org/get", .params = c(q = "ham"))
    

    或使用httr::GET

    GET("http://httpbin.org/get", query = list(q = "ham"))
    

    【讨论】:

    • 它仍然没有选择日期。我开始认为它必须与原始查询中参数的传递方式有关。 ** "api.hotwire.com/v1/deal/… &startdate=08/24/2015 & enddate=08/25/2015".**
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2019-04-18
    • 2020-12-24
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多